Quick Symfony Fillimi DI (Injection varësisë) Tutorial
Çfarë është Injection varësisë (DI)?
Injeksion varësisë është një teknikë që lejon për objektet e shoqëruar lirshëm brenda një software application. Në përgjithësi, nëse një objekt kërkon qasje në funksionalitetin e një tjetër ajo do të jetë instantiated brenda vendit që çon në sistemet e shoqëruar fort. Duke zbatuar injeksion varësisë ne injektuar 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 publike function (array $ parametrat) { / / Nevoja përshtatës të dhënave $ Dp = new DecisionParameters (); $ ParameterScore = $ dp-> getScore ($ parametrat); / * ... Logjika e disa më shumë vendim ... * / kthimit ($ parameterScore> 50); } }
Kjo pjesë e kodit është thënë të jetë e shoqëruar ngushtë me objektin DecisionParameters. Rishkrimin e mësipërme në një mënyrë të shoqëruar lirshëm ne do të kemi diçka si ....
<? Php klasë DecisionMaker { private $ _dp; __construct publike function ($ PD) { $ This-> _dp = $ dp; } makeDecision publike function (array $ parametrat) { $ ParameterScore = $ this-> _dp-> getScore ($ parametrat); / * ... Logjika e disa më shumë vendim ... * / kthimit ($ parameterScore> 50); } }
Ndërsa duke fituar të mirat e kodit të shoqëruar lirshëm ne jemi duke shtuar kompleksitetit të tillë që çdo herë që një objekt është instantiated ne gjithashtu duhet të ilustroj me shembull konkret varësi të saj dhe të kalojë këto në shumë. Për shembull, këtë:
$ Zgjedhja = DecisionMaker ri (); echo $ zgjedhje-> makeDecision (array ('përpjekjeve' => 'të ulët', 'Kthehu' => 'të lartë'));
tani bëhet:
$ Dp = new DecisionParameters (); $ Zgjedhja = new DecisionMaker ($ PD); echo $ zgjedhje-> makeDecision (array ('përpjekjeve' => 'të ulët', 'Kthehu' => 'të lartë'));
Kjo situatë bëhet më e dhimbshme si numri e varësisë për një klasë është rritur, dhe çka nëse varësinë vetë kanë varësi? Kjo mund shumë shpejt të bëhet një administratë objekt ankth! Shkruani enë injeksion varësisë (ose kornizave) ...
Vazhdo leximin 'e Shpejta Symfony Fillim DI Tutorial (Injection varësisë)' »
















































