Michael Korte – Senior Full-Stack Developer Freelancer aus Dortmund

Teil 16 – Components: Features werden wählbar

Nachdem klar ist, dass Routen explizit registriert werden und der Core keine Inhalte mehr kennt, stellt sich eine neue Frage:

Wo lebt eigentlich Fachlogik?

Warum Features nicht in die App gehören

Die App ist ein Orchestrator, kein Fachmodul.

Würden Features direkt in der App liegen, entstünde sofort eine neue Form von Monolith: klar strukturiert – aber schwer trennbar.

  • alles ist immer aktiv
  • Abhängigkeiten wachsen unbemerkt
  • Teile lassen sich nicht isolieren

Die Rolle von Components in v0.2

Components sind in v0.2 die kleinste vollständige Feature-Einheit:

  • sie enthalten Domain-Logik
  • sie liefern eigene Routen
  • sie kapseln ihre Funktionalität

Wichtig: Components sind optional.

Merksatz

Eine Component existiert nur, wenn die App sie bewusst lädt.

Ein Feature wird eingebunden

Das Einbinden einer Component ist kein versteckter Automatismus, sondern ein expliziter Schritt:


// Beispiel
$app->addComponent(new ShortenerComponent());
    

Ab diesem Moment:

  • registriert die Component ihre Routen
  • stellt sie ihre Logik bereit
  • wird sie Teil des Systems

Warum das System dadurch klarer wird

Durch Components wird sichtbar:

  • welche Features aktiv sind
  • wo Fachlogik liegt
  • was abgeschaltet werden kann

Nichts ist mehr implizit vorhanden. Alles ist eine bewusste Entscheidung.

Architektur-Effekt

Components machen Systeme erweiterbar, ohne sie unkontrollierbar zu machen.

Shortener als erste echte Component

Der URL-Shortener ist in v0.2 bewusst als erste Component umgesetzt.

Nicht, weil er komplex ist, sondern weil er vollständig ist:

  • eigene Routen
  • eigene Controller
  • eigene Logik

Er zeigt, wie ein Feature aussehen soll, das nicht im Core steckt – und nicht in der App.

Nächster Schritt

In Teil 17 gehen wir noch einen Schritt weiter: Plugins dürfen beobachten – aber nichts besitzen.

Projekt & Quellcode

Die Component-Struktur ist im Repository vollständig nachvollziehbar. Sie zeigt, wie Features isoliert werden, ohne das System zu fragmentieren.