Teil 15 – Explizite Routen statt impliziter Magie
Nachdem der Core leer geworden ist, stellt sich eine ganz praktische Frage: Woher weiß das System eigentlich, welche Seiten es gibt?
In vielen Frameworks lautet die Antwort: automatisch, konventionell oder implizit. Genau hier setzt v0.2 bewusst einen Gegenpunkt.
Das Problem impliziter Routen
Implizite Routen fühlen sich bequem an:
- Dateinamen werden zu URLs
- Controller werden automatisch gefunden
- Konventionen ersetzen Entscheidungen
Das funktioniert – bis etwas nicht mehr auffindbar ist oder sich unerwartet ändert.
Typische Symptome
„Wo kommt diese Route eigentlich her?“
„Warum ist diese Seite plötzlich erreichbar?“
Die Haltung von v0.2
v0.2 entscheidet sich bewusst für Klarheit:
- Keine Auto-Discovery
- Keine Namensmagie
- Keine versteckten Defaults
Jede Route existiert, weil jemand sie explizit registriert hat.
Routen gehören nicht dem Router
Ein wichtiger Perspektivwechsel: Der Router besitzt keine Routen.
Er stellt lediglich Werkzeuge bereit: map(), match() – aber keine Inhalte.
Die Entscheidung, welche Routen existieren, liegt an anderer Stelle.
Die App als Orchestrator
In v0.2 sammelt die App bewusst alle Stellen, die Routen liefern dürfen:
- die App selbst (für projektweite Seiten)
- aktive Components
Erst danach werden die Routen in den Router eingetragen.
// vereinfacht dargestellt
$app->registerExtensions();
$router->match();
Dadurch entsteht ein klarer Ablauf, der sich nachvollziehen lässt.
Warum das Debugging vereinfacht
Mit expliziten Routen ist immer klar:
- wer eine Route registriert hat
- in welchem Kontext sie entstanden ist
- warum sie existiert
Das ist weniger bequem – aber deutlich stabiler.
Architektur-Effekt
Explizite Routen machen Verhalten erklärbar, statt es zu erraten.
Nächster Schritt
In Teil 16 schauen wir uns an, wie Features ab v0.2 nicht mehr „immer da“ sind, sondern bewusst als Components eingebunden werden.
Projekt & Quellcode
Die Routing-Entscheidungen von v0.2 sind im Repository bewusst nachvollziehbar umgesetzt – ohne versteckte Konventionen.
- 👤 GitHub-Profil: github.com/MichaelKorte73
- 📦 Projekt-Repository: github.com/MichaelKorte73/CleanOutputMVC