Quick Start Symfony Di (iniksyon ng dependency) Tutorial
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' »
















































