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
















































