Категорија: зависност инекција Сад

Quick Start Symfony DI (зависност инекција) Почетен курс

Со , сабота 14 Август, 2010 14:21

Што е зависност инекција (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 (зависност инекција) Почетен курс '»













Панорама Тема од Themocracy

9 посетители онлајн сега
5 гости, 4-ботови, 0 членови
Макс посетители денес: 17 во 04:02 UTC
Овој месец: 19 на 19-08-2011 06:09 UTC
Оваа година: 130 на 28-03-2011 22:40 UTC
Сите време: 130 на 28-03-2011 10:40 UTC