Quick Symfony Fillimi DI (Injection varësisë) Tutorial
Çfarë është varësisë Injection (DI)?
Injeksion varësisë është një teknikë që lejon për objekte të shoqëruar lirshëm brenda një aplikim të software. Në përgjithësi, nëse një objekt kërkon qasje në funksionalitetin e një tjetër ajo do të jetë instantiated vendit kryesor të sistemeve të shoqëruar fort. Me injeksion varësisë implementuese injektuar ne objektet e nevojshme gati për përdorim (nganjëherë referuar edhe përmbysja e kontrollit - IOC). Merrni shembullin e mëposhtëm:
<? Php klasë DecisionMaker { makeDecision publik funksion ($ array parametrat) { / / Nevoja përshtatës bazës së të dhënave $ Dp = new DecisionParameters (); $ $ ParameterScore = dp-> getScore ($ parametrat); / * ... Logjika e disa më shumë vendim ... * / Kthimi ($ parameterScore> 50); } }
Kjo pjesë e kodit është e thënë të jetë e shoqëruar ngushtë me objektin DecisionParameters. Rishkrimin më lart në një mënyrë të shoqëruar lirshëm ne do të kemi diçka si ....
<? Php klasë DecisionMaker { private $ _dp; publik __ funksion konstrukt ($ PD) { $ Kjo-> _dp = $ dp; } makeDecision publik funksion ($ array parametrat) { $ ParameterScore = $ this-> _dp-> getScore ($ parametrat); / * ... Logjika e disa më shumë vendim ... * / Kthimi ($ parameterScore> 50); } }
Përderisa fituar të mirat e kodit shoqëruar lirshëm ne jemi duke shtuar kompleksitetin e tillë që çdo herë që një objekt është instantiated ne gjithashtu duhet të ilustroj me shembull konkret varësinë e saj dhe të kalojë këto në shumë. Për shembull, këtë:
$ Zgjedhje = DecisionMaker i ri (); echo $ zgjedhje-> makeDecision (array ('përpjekje' => 'ulët', 'kthimi' => 'e lartë'));
tani bëhet:
$ Dp = new DecisionParameters (); $ Zgjedhje = new DecisionMaker ($ PD); echo $ zgjedhje-> makeDecision (array ('përpjekje' => 'ulët', 'kthimi' => 'e lartë'));
Kjo situatë bëhet më e dhimbshme si numri i varësi për një klasë është rritur, dhe atë nëse Dependencies vetë kanë Dependencies? Kjo mund shumë shpejt të bëhet një makth objekt administrata! Shkruani kontejnerët injeksion varësisë (apo kornizat) ...
Vazhdo leximin 'Quick Symfony Fillim DI Tutorial (Injection varësisë)' »

















































