Kategorya: Zend_Cache

Quick Start Symfony Di (iniksyon ng dependency) Tutorial

Sa Lloyd Watkin, Sabado 14 Agosto 2010 02:21 pm

Ano ang dependency iniksyon (Di)?

Dependency iniksyon ay isang pamamaraan na pinapayagan para sa maluwag na kaisa bagay sa loob ng isang application software. Kadalasan kung ang isang bagay ay nangangailangan access sa functionality ng ibang magiging instantiated loob na humahantong sa mahigpit kaisa system. Sa pamamagitan ng pagpapatupad ng dependency iniksyon namin paturukan ng mga kinakailangang bagay handa para sa paggamit (minsan din-refer sa pagbabaligtad ng control - IOC). Dalhin ang mga sumusunod na halimbawa:

  <? Php
 class DecisionMaker {
     pampublikong function na makeDecision (array $ parameter) {
         / / Kailangan sa database adaptor
         $ Dp = bagong DecisionParameters ();
         $ ParameterScore = $ dp-> getScore ($ parameter);
         / * ...  Ilang higit pa lohika ng desisyon ...  * /
         bumalik ($ parameterScore> 50);
     }
 } 

Ang piraso ng code na ito ay sinabi sa mahigpit kaisa sa mga bagay DecisionParameters. Muling pagsusulat ng sa itaas sa isang maluwag kaisa fashion gusto namin ang isang bagay tulad ng ....

  <? Php
 class DecisionMaker {
     pribadong $ _dp;
     pampublikong function na __construct ($ dp) {
         $ Ito-> _dp = $ dp;
     }
     pampublikong function na makeDecision (array $ parameter) {
         $ ParameterScore = $ ito-> _dp-> getScore ($ parameter);
         / * ...  Ilang higit pa lohika ng desisyon ...  * /
         bumalik ($ parameterScore> 50);
     }
 } 

Habang pagkakaroon ng mga benepisyo ng maluwag kaisa code namin ay ang pagdaragdag ng kumplikado tulad na ang oras sa bawat bagay ay instantiated din namin upang magbigay ng halimbawa ng mga dependencies nito at pumasa ito sa masyadong. Halimbawa, ito:

  $ Pagpipilian = bagong DecisionMaker ();
 echo $ pagpipilian-> makeDecision (array ('pagsisikap' => 'mababa', 'bumalik' => 'mataas')); 

ngayon ay nagiging:

  $ Dp = bagong DecisionParameters ();
 $ Pagpipilian = bagong DecisionMaker ($ dp);
 echo $ pagpipilian-> makeDecision (array ('pagsisikap' => 'mababa', 'bumalik' => 'mataas')); 

Ang sitwasyon na ito ay magiging mas masakit bilang ay nadagdagan ang bilang ng mga dependencies para sa isang class, at kung ano ang kung ang mga dependencies na may kanilang sarili dependencies? Ito ay maaaring masyadong mabilis na maging isang bangungot ng pangangasiwa ng bagay! Ipasok ang mga lalagyan ng dependency iniksyon (o frameworks) ...
Ipagpatuloy pamagat na 'Quick Start Symfony Di (iniksyon ng dependency) Tutorial' »













Panorama Tema sa pamamagitan ng Themocracy

13 mga bisita sa online ngayon
8 na mga bisita, mga 5 bots, 0 miyembro
Max mga bisita sa ngayon: 19 sa 12:46 am UTC
Sa buwang ito: 19 sa 19-08-2011 6:09 am UTC
Ito taon: 130 sa 28-03-2011 10:40 pm UTC
Lahat ng oras: 130 sa 28-03-2011 10:40 pm UTC