Quick Start symfony DI (Dependency Injection) bemutatója
Mi Dependency Injection (DI)?
Függőség injekció olyan technika, amely lehetővé teszi a lazán csatolt objektumok egy szoftver. Általában, ha egy objektum hozzáférést igénylő funkcióit más lenne példányosítható belsőleg vezető szorosan összekapcsolt rendszerek. A végrehajtási függőség injekció mi adja a szükséges objektumokat használatra kész (néha említett inverzió ellenőrzés - IOC). Vegyük a következő példát:
<? Php {class DecisionMaker public function makeDecision (array $ paraméterek) { / / Kell az adatbázis-adapter $ Dp = new DecisionParameters (); ParameterScore $ = $ DP-> getScore ($ paraméterek); / * ... Néhány további döntés logikáját ... * / return ($ parameterScore> 50); } }
Ez a kódrészlet azt mondta, hogy szorosan kapcsolódik a DecisionParameters objektumot. Átírta a fenti egy lazán csatolt módon leszünk valami hasonló van ....
<? Php {class DecisionMaker Privát $ _dp; public function __ construct ($ dp) { $ This-> _dp dp = $; } public function makeDecision (array $ paraméterek) { ParameterScore $ = $ this-> _dp-> getScore ($ paraméterek); / * ... Néhány további döntés logikáját ... * / return ($ parameterScore> 50); } }
Miközben egyre előnyeit lazán kódot adunk hozzá a komplexitás, hogy minden egyes alkalommal, amikor egy objektum példánya is meg kell példányosítani a függőségeket, és adja át ezeket is. Például ez:
$ Választás = new DecisionMaker (); echo $-választás> makeDecision (array ('erőfeszítést' => 'gyenge', 'return' => 'magas'));
Most válik:
$ Dp = new DecisionParameters (); $ Választás = new DecisionMaker (dp $); echo $-választás> makeDecision (array ('erőfeszítést' => 'gyenge', 'return' => 'magas'));
Ez a helyzet egyre fájdalmasabb, mint a függőségek számát, egy osztály növekszik, és mi van, ha a függőségek maguknak függőségek? Ez elég hamar egy tárgy adminisztrációs rémálom! Adja meg a függőség injekció konténerek (vagy keretek) ...
Folytatódik olvasó "Quick Start symfony DI (Dependency Injection) Tutorial" »

















































