Quick Start Symfony DI (Dependency Injection) Tutorial
Was ist Dependency Injection (DI)?
Dependency Injection ist eine Technik, die für lose gekoppelte Objekte innerhalb einer Software-Anwendung ermöglicht. Im Allgemeinen, wenn ein Objekt erfordert den Zugriff auf die Funktionalität eines anderen es instanziiert intern was zu eng gekoppelten Systemen werden würde. Durch die Implementierung von Dependency Injection spritzen wir die benötigten Objekte einsatzbereit (manchmal auch Inversion of Control genannt - IOC). Nehmen wir folgendes Beispiel:
<? Php Klasse DecisionMaker { public function makeDecision (array $ parameters) { / / Benötigen Sie die Datenbank-Adapter $ Dp = new DecisionParameters (); $ ParameterScore = $ dp-> getScore ($ parameters); / * ... Einige weitere Entscheidung Logik ... * / return ($ parameterScore> 50); } }
Dieses Stück Code soll eng mit dem DecisionParameters Objekt gekoppelt werden. Umschreiben der oben in einer lose gekoppelten Mode würden wir so etwas wie haben ....
<Php class DecisionMaker {private $ _DP;? Public function __construct ($ dp) {$ this-> _DP = $ dp;} public function makeDecision (array $ parameters) {$ parameterScore = $ this-> _DP-> getScore ($ Parameter); / * ... Einige weitere Entscheidung Logik ... * / Return ($ parameterScore> 50);}}
Während gewinnen die Vorteile von lose gekoppelten Code, den wir zusätzliche Komplexität, so dass jedes Mal, wenn ein Objekt instanziiert wird müssen wir auch ihre Abhängigkeiten zu instanziieren und geben diese in zu werden. Zum Beispiel diese:
$ Auswahl = new DecisionMaker (); echo $ choice-> makeDecision (array ('Mühe' => 'low', 'return' => 'high'));
wird jetzt:
$ Dp = new DecisionParameters (); $ Auswahl = new DecisionMaker ($ dp); echo $ choice-> makeDecision (array ('Mühe' => 'low', 'return' => 'high'));
Diese Situation wird noch schmerzhafter als die Zahl der Abhängigkeiten für eine Klasse erhöht wird, und was ist, wenn die Abhängigkeiten selbst Abhängigkeiten? Dies kann sehr schnell ein Objekt Verwaltung Alptraum werden! Geben Sie Dependency Injection Container (oder Rahmen) ...
Continue reading 'Quick Start Symfony DI (Dependency Injection) Tutorial' »
















































