1. Verwendung der MVC-Architektur in Web-/PHP-Anwendungen
Das PDF des Dokuments ist |HIER| verfügbar.
Der Code für das Dokument ist |HIER| verfügbar.
Das MVC-Muster (Model-View-Controller) zielt darauf ab, die Präsentations-, Verarbeitungs- und Datenzugriffsebenen klar voneinander zu trennen. Eine Webanwendung, die diesem Muster folgt, ist wie folgt aufgebaut:
![]() |
Eine solche Architektur wird oft als 3-Tier- oder 3-Level-Architektur bezeichnet:
- Die Benutzeroberfläche ist die Ansicht (V)
- die Anwendungslogik ist der Controller (C)
- die Datenquellen bilden das Modell (M)
Die Benutzeroberfläche ist oft ein Webbrowser, es kann sich aber auch um eine eigenständige Anwendung handeln, die über das Netzwerk HTTP-Anfragen an den Webdienst sendet und die empfangenen Ergebnisse formatiert. Die Anwendungslogik besteht aus Skripten, die Benutzeranfragen verarbeiten. Die Datenquelle ist oft eine Datenbank, es können aber auch einfache Flatfiles, ein LDAP-Verzeichnis, ein Remote-Webdienst usw. sein. Es liegt im Interesse des Entwicklers, ein hohes Maß an Unabhängigkeit zwischen diesen drei Entitäten zu wahren, damit bei einer Änderung an einer der drei Entitäten die anderen beiden nicht oder nur minimal angepasst werden müssen.
Die MVC-Architektur eignet sich gut für Webanwendungen, die in objektorientierten Sprachen geschrieben sind. Die Sprache PHP (4.x) ist nicht objektorientiert. Dennoch kann man sich bemühen, den Code und die Anwendungsarchitektur so zu strukturieren, dass sie sich enger am MVC-Modell ausrichten:
- Wir werden die Geschäftslogik der Anwendung in Modulen unterbringen, die von denen getrennt sind, die für die Verwaltung des Anfrage-Antwort-Dialogs zuständig sind. Die MVC-Architektur sieht dann wie folgt aus:
![]() |
Innerhalb des Blocks [Anwendungslogik] können wir unterscheiden zwischen:
- das Hauptprogramm oder den Controller, der als Einstiegspunkt der Anwendung dient.
- den [Actions]-Block, eine Reihe von Skripten, die für die Ausführung der vom Benutzer angeforderten Aktionen zuständig sind.
- den Block [Business Classes], der die für die Logik der Anwendung erforderlichen PHP-Module gruppiert. Diese sind unabhängig vom Client. Beispielsweise muss sich die Funktion, die anhand bestimmter als Parameter übergebener Informationen eine Steuer berechnet, nicht darum kümmern, wie diese Informationen gewonnen wurden.
- den Block [Data Access Classes], der die PHP-Module enthält, die die vom Controller benötigten Daten abrufen, häufig persistente Daten (Datenbanken, Dateien usw.)
- die View-Generatoren, die Views als Antwort an den Client senden.
In den einfachsten Fällen lässt sich die Anwendungslogik oft auf zwei Module reduzieren:
- das [Control]-Modul, das die Client-Server-Kommunikation abwickelt: Bearbeitung der Anfrage, Generierung verschiedener Antworten
- das [Business-Logik]-Modul, das vom [Controller]-Modul zu verarbeitende Daten empfängt und diesem im Gegenzug Ergebnisse liefert. Dieses [Business-Logik]-Modul verwaltet dann selbst den Zugriff auf persistente Daten.

