10.2 Das entwickelte Framework – Trennung der Anliegen – Model View Controller
Nun genug der allgemeinen Beschreibung von PHP, schließlich soll dieses Buch nicht das PHP-Handbuch ersetzen. Vielmehr wollen wir Ihnen einige der im Buch bereits vorgestellten Konzepte anhand einer Umsetzung in PHP praktisch demonstrieren.
Eine einfache PHP-Anwendung besteht oft aus einer Reihe von PHP-Dateien, in denen die Logik der Anwendung als PHP-Skript formuliert ist, das mit der Struktur der Darstellung in HTML vermischt wird. Dies ist für sehr einfache Anwendungen akzeptabel; sobald eine Anwendung aber komplexer wird, wird diese Struktur zu einem Verwaltungsalptraum.
In diesem Kapitel schreiben wir ein kleines Framework, das uns ermöglicht, die Struktur der Darstellung von der Geschäftslogik der Anwendung zu trennen. Dabei verwenden wir den in Abschnitt 8.2 bereits beschriebenen Ansatz zur Trennung der Anliegen in der Präsentationsschicht: Model-View-Controller. Um das Framework praktisch zu demonstrieren, werden wir dazu auch gleich eine kleine Anwendung schreiben – eine kleine Kontaktdatenbank, in der wir die Adressen, Telefonnummern und andere Daten unserer Freunde speichern können.
10.2.1 Trennung der Daten von der Darstellung
Trennung der Anliegen Prinzip einer einzigen Verantwortung Trennung der Schnittstelle von der Implementierung
In unserer Anwendung wollen wir die Geschäftslogik von der Darstellungslogik trennen. Mit »trennen« meinen wir aber natürlich nicht, dass diese Aspekte unserer Anwendung nicht mehr zusammenhängen. Im Gegenteil – wir wollen den Zusammenhang zwischen diesen zwei Teilen unserer Anwendung formalisieren und ihn klar dokumentieren. Wir wollen eine formelle Schnittstelle definieren, so dass die Geschäftslogik und die Darstellungslogik unserer Anwendung nicht mehr von der Implementierung des jeweils anderen Teiles abhängig sind, sondern nur von der definierten Schnittstelle. Dies ermöglicht uns, die Teile der Anwendung unabhängig voneinander zu ändern – und zum Beispiel mehrere Varianten der Darstellung für dieselbe Geschäftslogik bereitzustellen. Für Programmierer, die unsere Anwendung pflegen sollten, klingt dies doch viel besser als eine Mischung von HTML und PHP in vielen Dateien, nicht wahr?
Nun, was verstehen wir hier unter eine Schnittstelle? Man sollte sich an dieser Stelle keine Schnittstelle eines Objekts mit einer Liste von Operationen vorstellen. Unsere Anwendungsschnittstelle besteht aus einer dokumentierten Vorgehensweise, wie die Darstellung auf die Daten der Geschäftslogik zugreift und wie sie Aktionen der Geschäftslogik auslöst.
Ich denke, es wird in einem Buch mit diesem Titel keinen überraschen, wenn wir die Schnittstelle als eine Gruppe von Objekten beschreiben.
Unsere Anwendungsschnittstelle wird aus Objekten – Diensten (Services) – bestehen. Jeder Dienst wird eine Reihe von Operationen bereitstellen, mit denen die Darstellungslogik die Daten abfragen und die Aktionen der Geschäftslogik auslösen kann.
Der Klient (die Darstellungslogik) verwendet die Dienste der Anwendungsschnittstelle.
Der Anbieter der Schnittstelle (die Geschäftslogik) implementiert diese Dienste-Anwendungsschnittstelle.
Unsere Anwendungsschnittstelle wird also aus einer Gruppe von Objektschnittstellen bestehen.
Ein Beispiel einer solchen Objektschnittstelle wäre der Dienst Sicherheit, der die Methoden benutzerAnlegen, anmelden, abmelden und andere bietet.
class Sicherheit { public function anmelden($benutzername, $kennwort) { ... } public function abmelden() { ... } public function benutzerAnlegen($username) { ... } ... }
Listing 10.2 Beispiel eines Dienstes in PHP
Widmen wir uns jetzt zuerst der Geschäftslogik, und implementieren wir unseren ersten Dienst – einen Dienst, der uns die Kontaktdaten unserer Freunde aus der Datenbank zurückgibt.
Ihre Meinung
Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.