Sven Rautenberg: Konfiguration, OOP² oder doch nur Rad² ?

Beitrag lesen

Moin!

Bootstrapping musst du ja sowieso bei jeder PHP-Applikation machen

Ok, ich benutz jetzt kein PHP sondern bin an einer C# Windows Forms Applikation, aber der Ansatz von Pimple ist torzdem ganz interessant.

Kann C# Lambda-Funktionen?

Mit Pimple (welches ich bislang noch nicht verwenden konnte) definierst du Lambda-Funktionen, die dir das jeweilige Objekt mit seinen Abhängigkeiten erstellen, wobei die Abhängigkeiten wieder durch Lambda-Funktionen aufgelöst werden, oder durch konfigurierte feste Werte. Diese Kette von Funktionsaufrufen wird aber erst zur Laufzeit ausgeführt, wenn eines der Objekte benötigt wird.

Sowas in der Art hab ich mir auch schon überlegt. eine zentrale Stelle die abhängig von einer Konfiguration die entsprechenden Objekte liefert. Stellt sich nur die Frage, wie "zentral" diese Stelle sein soll/darf. Mir kam dafür als erstes auch ein Singleton in den Sinn...

Wäre es besser das "Config-Objekt" per DI zu übergeben? Man müsste es dann nur einmal beim Bootstrap initialisieren und jedes Objekt könnte seine Abhängigkeiten daraus entnehmen. Allerdings wäre das dann auch so ein "Eierlegende-Wollmilch-Sau-Objekt"...

Nein. Das Config-Objekt liefert ein Interface, um auf einstellbare Werte zuzugreifen. Kein Objekt benötigt ALLE konfigurierten Werte, also gibt es keinen Grund, dem Objekt das ganze Config-Objekt zu übergeben.

Konfigurierbare Werte sind allerdings ebenfalls Dependencys. Insofern ist im Sinne der Dependency Injection ein konfigurierter Wert ebenso zu injecten, wie die Objektabhängigkeiten. Dabei wird sich vermutlich zeigen, dass zwiebelartig die innersten Objekte von Konfigurationsparametern abhängen, während die äußeren Objekte eigentlich nur von den inneren Objekten abhängen.

Ich würde es jedenfalls versuchen, so aufzubauen. :)

- Sven Rautenberg