MVC – Einführung durch ein eigenes kleines „Framework“

PHP-Code für Webanwendungen folgt für gewöhnlich einem Muster. Früher war das gerne mal „Spaghetti-Code“, heute folgen viele dem Prinzip des MVC – eine Abkürzung für Model-View-Controller. In diesem Artikel werde ich mit euch ein eigenes kleines „Framework“ entwickeln, dass dieses Prinzip veranschaulicht.


Inhalt


Grundlagen

Begriffsklärung

Model-View-Controller (MVC) bedeutet vor allem die Trennung von Aufgaben. Dabei symbolisieren die einzelnen Teile die drei häufigsten (und egtl. immer vorhandenen) Aufgaben einer Webanwendung. Ich werde mich jedem Buchstaben im Detail widmen und am Ende noch einen Ausblick auf weitere „Buchstaben“ geben.

Der Beispiel-Code zum mitmachen

Der Programmcode für unser Beispiel findet sich auf Github und darf von euch frei kopiert werden: MVC-Example. Im Laufe des Artikels werde ich immer wieder auf die entsprechenden Tags verlinken, die den besprochenen Stand des Codes repräsentieren.

Vorbereitung und index.php

Umleiten aller URLs (z. B. mit mod_rewrite)

Als Einstiegspunkt in eine MVC-Anwendung dient – wie sonst auch – eine index.php. Alle Anfragen an unseren Server werden dahin umgebogen. Eine entsprechende .htaccess für Apache könnte also so aussehen:

Andere Webserver bieten ähnliche Mechanismen. Wichtig für uns ist, dass die Anfrage auf die index.php umgeleitet wird und ein Parameter _url die vom Benutzer tatsächlich eingegebene Adresse enthält.

Damit erreichen wir einen zentralen Einstiegspunkt (die index.php) in unsere Anwendung, ohne die wichtige Information, welche Seite der Benutzer sehen will zu verlieren.





Autoloader

Irgendwie müssen unsere Klassen noch geladen werden. Da wir uns an PSR-4 halten, genügen folgende Zeilen als Autoloader. Dieser soll sich lediglich um den Namensraum Mvc kümmern, damit später von uns verwendete Bibliotheken nicht gestört werden.

Nähere Einzelheiten zum Konzept des Autoloader findet ihr ein einem eigenen Beitrag: Autoloader.

Nachdem wir nun die Grundlagen gelegt haben, können wir in die MVC-Struktur einsteigen. Der erste Schritt ist dabei ein Controller: Weiter zum Controller