Ich habe vor kurzem Interesse an einem korrekten OOP-Design in Web-Anwendungen geweckt. Ich denke, ich verstehe die meisten Prinzipien und Designmuster, aber manchmal habe ich Probleme damit, sie in die Praxis umzusetzen.
Ich benutze MVC und ich denke, ich bin in der Lage, Controller und Ansichten in OOP-Art zu entwerfen. Das Problem, mit dem ich konfrontiert bin, ist mit Modellen. Ich bin besessen von der Abhängigkeitsinjektion und der Inversion der Kontrolle im Allgemeinen. Es funktioniert gut in kleinen Beispielen, aber ich habe Schwierigkeiten, komplexe mehrschichtige Modelle zu entwerfen - ich denke über verschiedene Möglichkeiten nach, Abhängigkeiten in untere Ebenen usw. zu injizieren.
Also beschloss ich, nach Projekten zu suchen, die von erfahreneren OOP-Programmierern gemacht wurden, die ich studieren konnte. Ich suche PHP-Web-Anwendung, vorzugsweise mit MVC-Architektur-Muster. Es macht mir auch nichts aus, wenn es ein anämisches Modell hat (das normalerweise als Antipattern angesehen wird, aber in schweren datenbasierten Anwendungen bin ich oft gezwungen, anämische Modelle zu verwenden).
Vielen Dank.
EDIT: Ich suche kein Framework, sondern eine komplette Anwendung. Frameworks haben normalerweise nicht viel mit Modellarchitektur zu tun.
Magento Commerce hat komplexe mehrschichtige Modelle (www.magentocommerce.com), von denen Sie ein oder zwei Tricks abholen können.
Aber meine (persönliche) Erfahrung mit Magento war frustrierend: Ich hackte mit der Version 0.8-1.1 herum und es erschien überentwickelt und schlecht dokumentiert. Der Versuch, herauszufinden, wie es wirklich funktionierte, war komplex: Sie würden am Ende viele Dateien öffnen, die in Ihrem Editor geöffnet waren, die meisten von ihnen als Abstract.php bezeichnet. Hoffentlich haben sich die Dinge seitdem sehr verbessert.
Code-Zünder ist php4, ich empfehle es nicht zu viel. PHP OOP hat sich seitdem geändert. Eine bessere Idee wäre kohana
Ich habe viel gelernt, indem ich
Was genau ist das Problem, mit dem Sie sich bei "Models" konfrontiert sehen? Sie sprechen über Dependency Injection, aber das hat nichts mit dem Konzept eines "Modells" im MVC-Kontext zu tun. Wenn Sie nach Beispielen für die Verwaltung und Übergabe von Abhängigkeiten in Objekthierarchien suchen, sollten Sie sich die Dependency-Injection-Container-Implementierung von Symfony 2.0 ansehen.
Ich empfehle die CodeIgniter from scratch-Serie auf Nettuts +.
BEARBEITEN: @Galen
Das ist nicht korrekt. CodeIgniter unterstützt PHP 5.3.0 seit Version 1.7.2.
Tags und Links unit-testing php model-view-controller dependency-injection oop