Quick Start Symfony ДИ (зависност инекција) Почетен курс
Што е зависност инекција (Di)?
Зависност инјекција е техника која им овозможува за лабаво заедно објекти во рамките на софтверска апликација. Општо земено, ако објект бара пристап до функционалноста на друга дека ќе се инстанцира внатрешно водечките компании на цврсто заедно системи. Со воведување на зависност инекција ние инјектираат потребните објекти подготвен за употреба (понекогаш исто така се нарекува инверзија на контрола - МОК). Да ги преземе следниве пример:
<? PHP класа DecisionMaker { јавна функција makeDecision (низа $ параметри) { / / Потребата на базата на податоци адаптер $ ДП = new DecisionParameters (); $ ParameterScore = $ ДП-> getScore ($ параметри); / * ... Некои повеќе одлука логика ... * / враќање ($ parameterScore> 50); } }
Овој дел од кодот се вели дека е цврсто поврзан со DecisionParameters објект. Препишување на погоре во лабаво заедно мода би имале нешто слично ....
<? PHP класа DecisionMaker {приватна $ _dp; јавна функција __ construct ($ ДП) {$ ова-> _dp = $ ДП;} јавна функција makeDecision (низа $ параметри) {$ parameterScore = $ ова-> _dp-> getScore ($ параметри); / * ... Некои повеќе одлука логика ... * / Враќање ($ parameterScore> 50);}}
Додека се здобие со придобивките на лабаво заедно кодот ние се додавајќи сложеност, како што секој пат кога објектот е инстанцира ние исто така треба да се показ своите зависности и да го положат овие во премногу. На пример, вака:
$ Избор = new DecisionMaker (); echo $ избор-> makeDecision (array ('напор' => 'низок', 'враќање' => 'високо'));
сега станува:
$ ДП = new DecisionParameters (); $ Избор = new DecisionMaker ($ ДП); echo $ избор-> makeDecision (array ('напор' => 'низок', 'враќање' => 'високо'));
Оваа ситуација станува болно колку и бројот на зависности за класа е зголемена, и што ако зависности самите имаат зависности? Оваа прилично брзо може да стане објект администрација кошмар! Внесете зависност инекција контејнери (или рамки) ...
Продолжи со читање "Quick Start Symfony ДИ (зависност инекција) Почетен курс '»

















































