Hallo Hans,
ich habe den Thread nicht mehr ganz in Erinnerung, aber meine Aussage bedeutet, dass DI nicht die Vorgehensweise ist, eine Komponente in der index.php in eine Registry zu schreiben und diese dann in einer Teil-Komponente zu nutzen. Also in etwas das NICHT:
index.php
NewsController.php
Dependency injection sollte IMHO transparent und mehrfach verwendbar sein. Deswegen sollte ein Service immer über einen DI-Container bezogen werden, der die Initialisierung vornimmt und die Abhängigkeiten des Services etc. auflöst. So kannst du eine Datenbank-Connection beispielsweise 2x konfigurieren, einmal für eine Komponente, einmal für eine andere. Weiterhin kannst du von aussen Steuern ob ein Service nun im DEBUG-Modus laufen soll oder nicht. Ist der Konfigurations-Mechanismus noch so intelligent, dass er zwischen verschiedenen Umgebungen unterscheiden kann, dann kannst du das sogar mit einem Satz an Konfigurationen abbilden (schau dir hierzu mal das Konfigurations-Schema des APF an).
Ein Beispiel für einen DI-Service und dessen Initialisierung findest du unter http://wiki.adventure-php-framework....ger#Einleitung Der DI-Container des APF setzt darauf, dass ein Service Namespace-, Context- und Umgebungs-abhängig konfiguriert werden kann.
ich habe den Thread nicht mehr ganz in Erinnerung, aber meine Aussage bedeutet, dass DI nicht die Vorgehensweise ist, eine Komponente in der index.php in eine Registry zu schreiben und diese dann in einer Teil-Komponente zu nutzen. Also in etwas das NICHT:
index.php
PHP-Code:
Registry::register('core', 'db', new MySQLConnection('localhost', '3306', 'root', 'blabla', 'my-db'));
PHP-Code:
$conn = Registry::register('core', 'db');
Ein Beispiel für einen DI-Service und dessen Initialisierung findest du unter http://wiki.adventure-php-framework....ger#Einleitung Der DI-Container des APF setzt darauf, dass ein Service Namespace-, Context- und Umgebungs-abhängig konfiguriert werden kann.
Kommentar