Quick Start Symfony DI (injecţie de dependenţă) Tutorial
Ce este de injecţie de dependenţă (DI)?
Injecţie Dependenţa este o tehnica care permite pentru obiecte cuplate slab în termen de o aplicaţie software. În general, dacă un obiect necesită acces la funcţionalitatea de altul, ar fi instantiata intern duce la sistemele de strâns cuplate. Prin punerea în aplicare a injecţie de dependenţă am injectaţi obiectele necesare gata pentru utilizare (uneori, de asemenea, referire la inversarea de control - COI). Luaţi următorul exemplu:
<? Php clasa DecisionMaker { makeDecision funcţiei publice (array $ parametri) { / / Ai nevoie de adaptor bazei de date $ Dp = new DecisionParameters (); $ ParameterScore = $ dp-> getScore ($ parametri); / * ... Unele mai mult decizia de logica ... * / întoarcere ($ parameterScore> 50); } }
Această bucată de cod se spune că este strans cuplate la obiect DecisionParameters. Rescrierea de mai sus într-un mod slab cuplate am avea ceva de genul ....
<? Php clasa DecisionMaker { $ _dp privat; funcţiei publice __construct ($ dp) { $ This-> _dp = $ dp; } makeDecision funcţiei publice (array $ parametri) { $ ParameterScore = $ this-> _dp-> getScore ($ parametri); / * ... Unele mai mult decizia de logica ... * / întoarcere ($ parameterScore> 50); } }
În timp ce, beneficiind de cod slab cuplate suntem adăugarea de complexitate, astfel încât de fiecare dată când un obiect este instantiat De asemenea, trebuie să instantia dependenţele sale şi să treacă în aceste prea. De exemplu, aceasta:
$ Alegere = DecisionMaker noi (); echo $ alegere-> makeDecision (array ('efort' => "scăzut", "returnare" => 'mare'));
devine acum:
$ Dp = new DecisionParameters (); $ Alegere = new DecisionMaker ($ dp); echo $ alegere-> makeDecision (array ('efort' => "scăzut", "returnare" => 'mare'));
Această situaţie devine mai dureroasa ca numărul de dependenţe pentru o clasă este crescut, şi ce dacă dependenţe însele au dependenţe? Acest lucru poate deveni destul de repede o administraţie coşmar obiect! Introduceţi containere dependenţă injecţie (sau cadre) ...
Continuaţi lectură "Quick Start Symfony DI (injecţie de dependenţă) Tutorial '»
















































