Quick Start Symfony DI (Dependency Injection) výučba
Čo je Dependency Injection (DI)?
Dependency Injection je technika, ktorá umožňuje voľne viazaných objektov v rámci aplikácie. Všeobecne, ak objekt vyžaduje prístup k funkciám iného by bolo inštancie vnútorne vedie k pevne spojený systémov. Realizáciou Dependency Injection si aplikujte potrebné objekty pripravené na použitie (niekedy tiež odvolával sa na opak riadenie - IOC). Vezmite si nasledujúci príklad:
<? Php Trieda DecisionMaker { public function makeDecision (array $ parametre) { / / Potrebujeme databáze adaptér $ Dp = new DecisionParameters (); ParameterScore $ = $ DP-> getScore ($ parametre); / * ... Niektoré ďalšie logiky rozhodovaní ... * / návratnosť ($ parameterScore> 50); } }
Tento kus kódu sa hovorí, že pevne spojený s DecisionParameters objektu. Prepisovanie vyššie voľne viazaných spôsobom by sme si niečo také ....
<? Php Trieda DecisionMaker { private $ _dp; public function __construct ($ dp) { $ This-> _dp = $ DP; } public function makeDecision (array $ parametre) { ParameterScore $ = $ this-> _dp-> getScore ($ parametre); / * ... Niektoré ďalšie logiky rozhodovaní ... * / návratnosť ($ parameterScore> 50); } }
Kým získanie výhody voľne viazané kódu pridávame zložitosti tak, že zakaždým, keď je objekt inštancie musíme tiež jeho závislosti inštanciu a odovzdať tieto príliš. Napríklad tento:
$ Voľby = new DecisionMaker (); echo $ voľby-> makeDecision (array ('úsilie' => 'nízke', 'návrat' => 'vysokú'));
Teraz sa stáva:
$ Dp = new DecisionParameters (); $ Voľby = new DecisionMaker ($ dp); echo $ voľby-> makeDecision (array ('úsilie' => 'nízke', 'návrat' => 'vysokú'));
Táto situácia sa stáva bolestivé ako počet závislostí triedy sa zvyšuje, a čo keď závislostí sami so závislosťou? To môže veľmi rýchlo stať predmetom správy nočná mora! Zadajte kontajnery Dependency Injection (alebo rámca) ...
Pokračovať v čítaní "Quick Start Symfony DI (Dependency Injection) Seminár" »
















































