Ankündigung

Einklappen
Keine Ankündigung bisher.

Best Practice bei Dependency Injections

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • #46
    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
    PHP-Code:
    Registry::register('core''db', new MySQLConnection('localhost''3306''root''blabla''my-db')); 
    NewsController.php
    PHP-Code:
    $conn Registry::register('core''db'); 
    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.
    Viele Grüße,
    Dr.E.

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    1. Think about software design [B]before[/B] you start to write code!
    2. Discuss and review it together with [B]experts[/B]!
    3. Choose [B]good[/B] tools (-> [URL="http://adventure-php-framework.org/Seite/088-Why-APF"]Adventure PHP Framework (APF)[/URL][URL="http://adventure-php-framework.org"][/URL])!
    4. Write [I][B]clean and reusable[/B][/I] software only!
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Kommentar

    Lädt...
    X