Quick Start symfony DI (függőség injekció) bemutatója
Mi az a függőség injekció (DI)?
A 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 meg a szükséges tárgyakat 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) { / / Van szüksége 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 mondják, hogy szorosan kapcsolódik a DecisionParameters objektumot. Átírása a fenti egy lazán összekapcsolt módon is volna valami ilyesmit ....
<? 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 csatolt kód vagyunk hozzá összetettsége olyan, hogy minden egyes alkalommal, amikor egy objektum példányosított 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' => 'alacsony', 'vissza' => 'jó'));
Most válik:
$ Dp = new DecisionParameters (); $ Választás = new DecisionMaker ($ dp); echo $ választás-> makeDecision (array ('erőfeszítést' => 'alacsony', 'vissza' => 'jó'));
Ez a helyzet egyre fájdalmasabb, mint a számos függőséget egy osztály nőtt, és mi van, ha a függőségek maguk 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ó tartályok (vagy keretek) ...
Folytatódik olvasó "Quick Start symfony DI (függőség injekció) Tutorial" »
















































