Jörg Reinholz: MVC in PHP-Projekt

Beitrag lesen

Moin!

  • Wo ist es sinnvoll in einem komplexeren php-projekt welche php Dateien wo im MVC-Modell reinzupacken. .lib.php, .inc.php in model?

Libarys (Bibliotheken) enthalten Programmfunktionen, die mit dem "Endprogramm" nicht unmittelbar zu tun haben und in ganz anderen Programmen Verwendung finden können (nehmen wir mal als Beispiel eine Funktion, die prüft, ob eine IP-Adresse zu einem Netzwerk gehört.) Diese werden allerdings auch includiert.

Wenn Du da schon trennen willst, dann verwende "*.inc.php" für echte Inkludes, z.b. wenn Du in einer config.php Daten setzt. Allerdings tragen diese dann durchaus zum Programmablauf bei. Die View-Schicht ist alles, was aus den Daten das dem Webserver zu übergebende HTML (und/oder CSS/JS) erzeugt (Falls PHP als Templatesprache für die Webseitenerzeugung genutzt wird, was längst nicht immer der Fall ist.

  • Wie ist HTML in einer PHP-Datei aufgeteilt? Strikt getrennt oder wie beim Eingabefomular beide zusammen in einer Datei?

Seit wann sind HTML-Formular und verarbeitendes PHP in einer Datei? Das mag für "Affenskripte" zutreffen aber es spricht vieles dafür, das nicht so zu machen. Gerade MVC.

Ich möchte mich weniger blamieren, deswegen Frage ich.

MVC ist derzeit ein Buzzword. Was Model (Daten), View (Präsentation) und C (Kontroller) sind unterscheidet sich schon mal je nach Perspektive. Das lässt sich also niemals so genau bestimmen. So lange Du aus PHP-Sicht darauf schaust kannst Du auch sagen: Daten sind, na die Daten aus Dateien, Datenbanken oder Geräten. Die sind also zugleich das Model. Die View ist das Erzeugen von HTML aus Daten und Templates. Der Controller ist jegliche Verarbeitung von Daten oder Ausgaben zu den Daten, die dann von der View verarbeitet werden.

Aus Sicht des Browsers ist dann die Webseite mit allem Inhalt (HTML, CSS, JS) erstmal "die Daten". Also Model. Controller ist alles, was die Webseite vor der Darstellung verarbeitet (und bei nicht validen Seiten spekuliert was der "Webdesigner" eigentlich will) und zur View zählen dann CSS aber auch Widgets wie zB. die Vorlagen für die Anzeige von Formularelementen.

Aus Sicht von Javascript ist das DOM der Webseite und mit "AJAX" übertragene bzw. in Formulare eingegebene, aber auch der Inhalt hart codierter Variablen "Daten". Die View ist das, was nach deren Verarbeitung präsentiert wird, regelmäßig also wieder DOM.

Buzzwort: Joomla versucht sich in MVC. Davon sollte man aber eher nichts lernen. Was nützt all die schöne Theorie, wenn bei der Umsetzung Mist gemacht wird.

Buzzwort II: Es macht keinen Sinn Kleinigkeiten in ein MVC-Muster zu pressen: "Ziel des Musters ist ein flexibler Programmentwurf, der eine spätere Änderung oder Erweiterung erleichtert und eine Wiederverwendbarkeit der einzelnen Komponenten ermöglicht" - das ist bei Kleinigkeiten höchst kontraproduktiv.

Jörg Reinholz