Skip to content

Warum explizites Dependency-Wiring?

NENE2 verwendet explizites, handgeschriebenes Dependency-Wiring anstatt Autowiring oder konventionsbasierter Container-Magie. Diese Seite erklärt warum.

Was explizites Wiring bedeutet

php
// RuntimeServiceProvider.php — jede Abhängigkeit ist ausgeschrieben
$container->bind(NoteRepositoryInterface::class, function (ContainerInterface $c) {
    return new PdoNoteRepository($c->get(DatabaseQueryExecutorInterface::class));
});

Die Gründe für explizites Wiring

1. Das Wiring ist immer auffindbar

Mit explizitem Wiring gibt grep -r 'NoteRepository' in den Service-Provider-Dateien die vollständige Antwort auf „Wie wird diese Klasse konstruiert?".

2. Fehler schlagen beim Start fehl, nicht zur Laufzeit

Ein explizites Binding, das auf eine fehlende Klasse verweist, schlägt beim Aufbau des Containers fehl.

3. KI-Agenten und statische Analyse können den Graphen verfolgen

Explizites Wiring erzeugt einen Abhängigkeitsgraphen, den grep, PHPStan und LLM-Agenten ohne Ausführen des Containers traversieren können.

4. Keine Kopplung durch Annotationen oder Attribute

NENE2-Domänenklassen tragen keine Container-Annotationen.

Kompromisse

Explizites WiringAutowiring
Immer lesbarWeniger Boilerplate
Schnelles Scheitern beim StartPraktisch für schnelles Scaffolding
Keine MagieErfordert Kenntnis der Container-Regeln
Ausführlich bei vielen KlassenSkaliert automatisch

Veröffentlicht unter der MIT-Lizenz.