Quick Start Symfony DI (Зависимост Injection) инстркцията
Каква е зависимостта Injection (DI)?
Зависимост инжекция е техника, която дава възможност за свободно съчетани предмети в рамките на софтуерно приложение. По принцип, ако един обект се изисква достъп до функционалността на друг, би било инстанция вътрешно, което води до плътно свързани системи. Чрез прилагане на зависимостта инжекция се инжектира необходимото предмети, готови за употреба (понякога и по-обръщане на контрол - МОК). Вземете за пример следния пример:
<? PHP клас DecisionMaker { публична функция makeDecision (масив $ параметри) { / / Нуждаете се от базата данни адаптер $ DP = нови DecisionParameters (); $ ParameterScore = $ DP-> getScore ($ параметри); / * ... Някои повече логика на решение ... * / връщане ($ parameterScore> 50); } }
Тази част от кода се казва, да бъдат тясно свързани DecisionParameters обект. Пренаписване на по-горе в свободно свързани мода, ние ще трябва нещо подобно ....
<? PHP клас DecisionMaker { частни $ _dp; публична функция __construct (ДП) { $ Това-> _dp = $ DP; } публична функция makeDecision (масив $ параметри) { $ ParameterScore = $ това-> _dp-> getScore ($ параметри); / * ... Някои повече логика на решение ... * / връщане ($ parameterScore> 50); } }
При получаване на ползите от свободно свързани код, ние сме добавяне на сложност, така че всеки път, когато даден обект е инстанция, ние също трябва да инстанциира негови зависимости и така, в твърде. Така например, това:
$ Избор = нови DecisionMaker (); ехо $ избор-> makeDecision (масив ("усилие" => "ниско", "връщане" => "високи"));
сега става:
$ DP = нови DecisionParameters (); $ Избор = нови DecisionMaker (ДП); ехо $ избор-> makeDecision (масив ("усилие" => "ниско", "връщане" => "високи"));
Тази ситуация става все по-болезнено, като се увеличава броя на зависимостите за клас, и какво би станало, ако зависимости, които сами по себе си зависимости? Това може доста бързо да се превърне в кошмар администрация на обект! Въведете зависимост инжекция контейнери (или рамки) ...
Продължи четене "Quick Start Symfony DI (Зависимост Injection) Tutorial" »
















































