Quick Start Symfony DI (Dependency Injection) výuka
Co je Dependency Injection (DI)?
Dependency Injection je technika, která umožňuje volně vázaných objektů v rámci aplikace. Obecně, pokud objekt vyžaduje přístup k funkcím jiného by bylo instance vnitřně vede k pevně spojený systémů. Realizací Dependency Injection si aplikujte potřebné objekty připravené k použití (někdy také odkazoval se na opak řízení - IOC). Vezměte si následující příklad:
<? Php Třída DecisionMaker { public function makeDecision (array $ parametry) { / / Potřebujeme databázi adaptér $ Dp = new DecisionParameters (); ParameterScore $ = $ DP-> getScore ($ parametry); / * ... Některé další logiky rozhodování ... * / návratnost ($ parameterScore> 50); } }
Tento kus kódu se říká, že pevně spojen s DecisionParameters objektu. Přepisování výše volně vázaných způsobem bychom si něco takového ....
<? Php Třída DecisionMaker { private $ _dp; public function __construct ($ dp) { $ This-> _dp = $ DP; } public function makeDecision (array $ parametry) { ParameterScore $ = $ this-> _dp-> getScore ($ parametry); / * ... Některé další logiky rozhodování ... * / návratnost ($ parameterScore> 50); } }
Zatímco získání výhody volně vázané kódu přidáváme složitosti tak, že pokaždé, když je objekt instance musíme také jeho závislosti instanci a předat tyto příliš. Například tento:
$ Volby = new DecisionMaker (); echo $ volby-> makeDecision (array ('úsilí' => 'nízké', 'návrat' => 'vysokou'));
Nyní se stává:
$ Dp = new DecisionParameters (); $ Volby = new DecisionMaker ($ dp); echo $ volby-> makeDecision (array ('úsilí' => 'nízké', 'návrat' => 'vysokou'));
Tato situace se stává bolestivé jako počet závislostí třídy se zvyšuje, a co když závislostí sami se závislostí? To může velmi rychle stát předmětem správy noční můra! Zadejte kontejnery Dependency Injection (nebo rámce) ...
Pokračovat ve čtení "Quick Start Symfony DI (Dependency Injection) Seminář" »
















































