Es gibt rund eine Million "PHP-Frameworks". Und die meisten von ihnen rechnen sich nach dem MVC-Muster. Es ist zwar willkommen, den osCommerce-Codierungsstil (Verarbeitungslogik, die stark mit SQL und HTML vermischt ist) zu überwinden, aber es gibt sicherlich einfachere und leichter zu befolgende Ansätze, um ein wartbares Anwendungsdesign zu erhalten.
Das ursprüngliche MVC-Konzept war auf GUI-Anwendungen ausgerichtet. Und für Gtk / Python scheint es machbar, dementsprechend zu folgen. PHP-Webanwendungen funktionieren jedoch nicht mit Live-Ansichten (GUI-Elementen) und einer dauerhaften Controller-Laufzeit. Es ist mit Sicherheit eine Fehlbezeichnung, wenn nur der verwendete Code + die Verzeichnisgruppierung oder die Klassennamen beschrieben werden.
"MVC" scheint wie ein Schlagwort für PHP-Frameworks verwendet zu werden. Und ich habe tatsächlich gesehen, dass ein oder zwei ausgereifte PHP-Frameworks dies zugeben, aber den Ausdruck trotzdem neu definieren, um mit interna übereinzustimmen.
Also ist es im Allgemeinen Schlangenöl? Warum wird keine bessere Terminologie verwendet und ein vernünftigeres Konzept für wartbares PHP verbreitet?
Einige ausführliche Überlegungen
Warum ich vermute, dass PHP-Implementierungen nicht dem tatsächlichen MVC-Muster folgen:
Modelle : Theoretisch sollten Modelle fett sein und Geschäftslogik enthalten, und Controller sollten Thin-Handler sein (Eingabe-> Ausgabe). In Wirklichkeit befürworten die PHP-Frameworks flache Modelle. CI und Symfony setzen beispielsweise Model == ORM gleich. Selbst HTTP-Eingaben werden vom Controller verarbeitet und nicht als Modell behandelt.
Ansichten : Problemumgehungen mit AJAX-Rabatt. Auf Webseiten können keine Ansichten angezeigt werden. PHP-Frameworks pumpen immer noch Seiten aus. Die Schnittstelle folgt immer noch effektiv dem normalen HTTP-Modell. Es gibt keinen Vorteil gegenüber Nicht-MVC-Anwendungen. (Und schließlich kann keines der weit verbreiteten PHP-Frameworks tatsächlich in GUI-Ansichten anstelle von HTML ausgegeben werden. Ich habe eine PHP-Bibliothek gesehen, die Gtk / Console / Web ausführen kann, die Frameworks jedoch nicht.)
Controller : Ich bin mir nicht sicher. Controller müssen im MVC-Modell wahrscheinlich nicht lange laufen und dauerhaft aktiv sein. Im PHP-Framework-Kontext handelt es sich jedoch hauptsächlich um Anforderungshandler. Nicht wirklich etwas, worüber man sich streiten kann, aber es fühlt sich einfach leicht buzzwordisch an.
Würde es bessere Deskriptoren geben? Ich habe Akronyme wie PMVC oder HMVC gesehen. Obwohl Beschreibungen dort mehrdeutiger werden, würden diese möglicherweise die aktuellen Web-Frameworks weniger hokey beschreiben?