PHP MVC Framework – Was es ist, was es bringt
Eigentlich ist es aus dem PHP Umfeld nicht mehr wegzudenken. Das Model View Controller Muster (Pattern) oder kurz MVC. Aber was bedeutet dies eigentlich und wie funktioniert es?
Gerade für Einsteiger ist PHP eine fantastische Möglichkeit schnell Ergebnisse zu erzielen auch ganz ohne das MVC Pattern. Also warum den etwas komplizierteren Weg wählen?
Ganz einfach: Ein Projekt ist ja nicht nach der ersten Abnahme bzw. Livegang abgeschlossen. Ein Projekt wird während seiner Lebenszeit zahllose Änderungen durchmachen. Und genau hier fangen die Probleme an.
Inhaltsverzeichnis
Jeder ist für seinen Bereich zuständig
Im MVC Pattern geht man davon aus, dass man das gesamte Projekt in drei Bereiche einteilt.
Model
View
Controller
Ehrlich gesagt weiss ich nicht, warum es MVC und nicht CMV heisst, da es eigentlich logischer wäre.
Bei dem MVC Pattern ist der Controller die Steuereinheit eines bestimmten Webseitenaufrufes. Dieser Controller holt sich evtl. benötigte Daten aus dem Model und gibt diese dann an die View weiter, die für die Ausgabe zuständig ist. Woher das Model die Daten holt, ist dem Controller und der View dabei völlig egal. Dies kann z. B. eine Textdatei, eine Datenbank oder ein Webservice sein.
Aus HTML wird, aus HTML wird CSV, aus HTML wird irgendwas
Ein kleines theoretisches Beispiel soll die Vorteile des MVC Pattern verdeutlichen.
Ich denke da an eine Sammlung von Daten, die auf einer Webseite in einer normalen HTML Tabelle angezeigt werden sollen. In meinem Beispiel sind das Wetterdaten der letzten 2 Tage.
Dazu habe ich das Datum, den Messzeitpunkt, die Gradzahl und die Niederschlagswahrscheinlichkeit (also wann es regnet).
So sieht die Tabelle (gekürzt) in HTML aus:
Datum | Uhrzeit | Grad | Niederschlag % |
---|---|---|---|
01.03.2012 | 12:00 | 7 | 25 |
01.03.2012 | 18:00 | 3 | 10 |
02.03.2012 | 12:00 | 5 | 35 |
02.03.2012 | 18:00 | 2 | 45 |
Ich habe da einen Auftrag für Sie
Mein Beispiel ist also fertig und komplett ohne MVC. Ist natürlich in meinem Beispiel auch nicht unbedingt notwendig.
Jetzt ruft mich jemand an, der total von dieser Idee begeistert ist und bietet mir einen Haufen Geld, damit er diese Daten auch in seine Seite einbinden kann. Allerdings möchte er noch eine zusätzliche Spalte für die Windgeschwindigkeit einbauen und die Tabelle anders darstellen. Die Daten für die Windgeschwindigkeit habe ich aber nicht, der Kunde hat diese Daten aber bereits selbst.
Jetzt gibt es natürlich die Möglichkeit, das der Kunde uns diese Daten regelmässig liefert und wir diese dann einbauen. Auch könnte man per CSS die Tabelle nach dem Wunsch des Kunden designen.
Aber es gibt auch die Möglichkeit, die Daten, die wir bereits haben, dem Kunden einfach als Rohdaten in Form von CSV Daten zu liefern. Der Kunde ist somit frei in seiner Gestaltung und kann auch noch weitere Daten anfügen.
Aber warum jetzt unbedingt MVC?
In dem HTML Beispiel holen wir die Daten mit dem Controller aus dem Model und die HTML View zeigt diese an.
Im CSV Beispiel holen wir die Daten mit dem Controller aus dem Model und die CSV View zeigt diese an.
Aha, hier haben wir es. Wir fassen in diesem einfachen Beispiel nur die View an. Der Rest der Steuerung, also Model und Controller ändern sich nicht.
Gleiches gilt natürlich auch für jede andere Steuerungseinheit. Wenn wir mit dem Model die Daten aus einer Textdatei lesen und wir später auf eine Datenbank oder einen Webservice umsteigen, dann ändert sich nur das Model. Der Controller und die View ändern sich nicht.
Vorteile und Nachteile
Die Anzahl der Vorteile sind kaum begrenzt. Es fängt an bei der Wiederverwendbarkeit von bestehendem Code, die Übersichtlichkeit, die Wartbarbeit und geht weiter bis zur sauberen Trennung.
Als Nachteil würden mir jetzt eigentlich nur der gewisse Overhead (Überschuss) an zusätzlichen Code einfallen, der für die Zusammenarbeit der drei Steuereinheiten erforderlich ist.
Fazit
Das MVC Pattern ist aus der heutigen Softwareentwicklung nicht wegzudenken. Klar gibt es wie in jedem Bereich auch Leute, die ganz ohne auskommen, aber an irgendeinem Punkt wird man sich immer darüber ärgern, wenn man ohne MVC darsteht.