Snabbstart Symfony DI (Dependency Injection) Tutorial
Vad är Dependency Injection (DI)?
Dependency Injection är en teknik som möjliggör löst kopplade objekt inom ett program. Generellt om ett föremål kräver tillgång till funktionaliteten av ett annat skulle det vara instansieras internt leder till tätt kopplade system. Genom att implementera beroendeinjektion vi injicera önskade objekt klar för användning (ibland även kallat Inversion of Control - IOC). Ta följande exempel:
<? Php klass DecisionMaker { public function makeDecision (matris $ parametrar) { / / Behöver databasen adaptern $ Dp = new DecisionParameters (); $ ParameterScore = $ dp-> getScore ($ parametrar); / * ... Några fler beslut logik ... * / avkastning ($ parameterScore> 50); } }
Denna bit kod sägs vara tätt kopplade till DecisionParameters objektet. Skriva ovanstående i en löst kopplade sätt vi skulle ha något liknande ....
<? Php klass DecisionMaker { privat $ _dp; offentlig funktion __construct ($ dp) { $ This-> _dp = $ dp; } public function makeDecision (matris $ parametrar) { $ ParameterScore = $ this-> _dp-> getScore ($ parametrar); / * ... Några fler beslut logik ... * / avkastning ($ parameterScore> 50); } }
Även att få fördelarna med löst kopplade kod vi lägger till komplexitet så att varje gång ett objekt instansieras måste vi också instansiera dess beroenden och förmedla dessa i också. Till exempel detta:
$ Val = new DecisionMaker (); echo $ val-> makeDecision (array ('satsning' => 'låg', 'tillbaka' => 'hög'));
nu blir:
$ Dp = new DecisionParameters (); $ Val = new DecisionMaker ($ dp); echo $ val-> makeDecision (array ('satsning' => 'låg', 'tillbaka' => 'hög'));
Denna situation blir mer smärtsam eftersom antalet beroenden för en klass ökar och vad händer om beroenden själva har beroenden? Detta kan ganska snabbt bli ett objekt administration mardröm! Skriv behållare beroende injektion (eller ramar) ...
Fortsätt läsa "Quick Start Symfony DI (Dependency Injection) Tutorial '»
















































