In Teil IV dieser Reihe wurde kurz das Model-View-Controller-Schema für Webanwendungen vorgestellt. Dieser Beitrag möchte dieses Entwurfsmuster im Detail beschreiben und anhand eines Fallbeispiels noch näher erläutern.
Die Bestandteile des MVC sind:
- Model/Modell – Das Modell enthält die darzustellenden Daten. Woher die Daten kommen und wie diese zusammenhängen, spielt keine Rolle. So kann es sich dabei um ein Datenmodell, Geschäftsmodell oder sogar um ein für die Präsentation abstrahiertes Modell handeln. Das Modell kennt weder die Präsentation noch die Steuerung, es weiß somit nicht, wie, ob und wie oft es dargestellt und verändert wird. Je nach Anwendung müssen jedoch Änderungen im Modell beobachtbar sein, beispielsweise durch ein Observer-Entwurfsmuster. Es kann darüber hinaus den View (s. u.) über Änderungen an den Daten informieren.
- View/Präsentation – Die Präsentation ist für die Darstellung der relevanten Daten aus dem Modell zuständig. Sie beschafft die Daten aus dem Modell, stellt sie dar und aktualisiert bei Änderungen im Modell entsprechend die Darstellung. Je nach Design leitet sie auch Benutzeraktionen oder Events an die Steuerung weiter.
- Controller/Steuerung – Die Steuerung verwaltet das Modell und die Präsentation. Sie nimmt die Benutzeraktionen entgegen, wertet sie aus und agiert entsprechend. Sie enthält die Intelligenz und steuert den Ablauf (Workflow) der Präsentation.
Das MVC-Architekturmuster trifft allerdings keine Aussage über die Positionierung der Geschäftslogik innerhalb der MVC-Klassen. Diese kann je nach Anwendungsfall besser im Control-Modul aufgehoben sein oder in das Modell verlagert werden, wenn es z. B. mehrere Control-Module gibt.
Fallbeispiel Webregistrierung
Ganzen Artikel lesen...
Die folgende Abbildung stellt das MVC-Modell für eine einfache Webregistrierung dar. Der Benutzer (Client) fragt als erstes die Seite register.php an. Er bekommt eine Seite mit einem HTML-Formular als Antwort. Als Aktion ist im Formular die validate.php angegeben. Also schickt der Browser nach dem Ausfüllen des Formulars die eingegebenen Daten an die validate.php. Validate.php, in diesem Fall der Controller, prüft die eingegebenen Werte. Es ist lediglich für die Prüfung und Verarbeitung der Daten zuständig. Validate.php selbst gibt dem Benutzer kein Feedback. Der Controller gibt hierfür die Kontrolle an die entsprechenden Views weiter, in diesem Fall entweder an register.php, wenn die Eingaben ungültig waren oder an die granted.php. Wird die Kontrolle wieder an die register.php zurückgeben, zeigt register.php dem Benutzer erneut das Formular mit einer Fehlermeldung an. Der Browser schickt die korrigierten Daten wieder an die validate.php. Sind die Eingaben korrekt, werden die Daten zur Speicherung an die Nutzerdatenbank übergeben. Die Kontrolle wird daraufhin an die granted.php abgegeben. Diese zeigt dem Benutzer dann eine Erfolgsbestätigung.

Dies ist selbstverständlich nur eine von vielen Möglichkeiten für ein MVC-Modell. Aber es zeigt die grundlegende Funktionsweise des MVC-Modells. An der Abbildung ist gut zu erkennen, dass einzelne Teile wie die Datenspeicherung oder das Aussehen unproblematisch ausgetauscht werden können.
Dieser einfache Austausch bringt einen beachtlichen Vorteil mit sich: Die Anwendung kann an veränderte Anforderungen relativ einfach angepasst werden. Das MVC-Modell ermöglicht es somit, eine anfangs »kleine« Webanwendung im Nachhinein nachzurüsten und zu erweitern.

Dieser Abschnitt wurde dem Buch “PHP 5 – Objektorientierte Programmierung” von Matthias Kannengiesser entnommen, das im Franzis Verlag erschienen ist. Sie können es hier direkt bestellen.

Matthias Kannengiesser
Lernen Sie die ganze Vielfalt vom Franzis Buch- und Softwareverlag kennen