Quick Start Symfony DI (Injezzjoni Dipendenza) Tutorial
X'inhu Dipendenza injezzjoni (DI)?
Injezzjoni Dipendenza hija teknika li tippermetti oġġetti laxk flimkien fi applikazzjoni ta 'softwer. Ġeneralment jekk oġġett teħtieġ aċċess għall-funzjonalità ta 'Stat li jkun instantiated internament ewlieni għal sistemi sewwa akkoppjati. B'injezzjoni dipendenza implimentazzjoni aħna tinjetta l-oġġetti meħtieġa lest għall-użu (xi kultant imsejħa wkoll l-inverżjoni ta 'kontroll - IOC). Ħu l-eżempju li ġej:
<? PHP klassi DecisionMaker { pubbliku funzjoni makeDecision ($ parametri firxa) { / / Ħtieġa-adapter database $ Dp = ġdid DecisionParameters (); $ ParameterScore = $ dp-> getScore ($ parametri); / * ... Loġika ftit aktar deċiżjoni ... * / ritorn ($ parameterScore> 50); } }
Din il-biċċa tal-kodiċi huwa qal li jkun sewwa flimkien l-oġġett DecisionParameters. Kitba mill-ġdid ta 'hawn fuq b'mod laxk flimkien aħna'd jkollhom xi ħaġa bħal ....
<? PHP klassi DecisionMaker { privat $ _dp; pubbliku funzjoni __ tibni ($ dp) { $ Dan-> _dp = $ dp; } pubbliku funzjoni makeDecision ($ parametri firxa) { $ ParameterScore = $ dan-> _dp-> getScore ($ parametri); / * ... Loġika ftit aktar deċiżjoni ... * / ritorn ($ parameterScore> 50); } }
Filwaqt li jiksbu l-benefiċċji ta 'kodiċi laxk flimkien aħna żżid tali komplessità li kull darba l-oġġett huwa instantiated irridu wkoll li instantiate dipendenzi tagħha u tgħaddi dawn fil wisq. Per eżempju, dan:
$ Għażla = DecisionMaker ġdid (); eku $ għażla> makeDecision (array ('isforz' => "baxxa", "ritorn" => "għolja"));
issa jsir:
$ Dp = ġdid DecisionParameters (); $ Għażla = ġdid DecisionMaker ($ dp); eku $ għażla> makeDecision (array ('isforz' => "baxxa", "ritorn" => "għolja"));
Din is-sitwazzjoni ssir iktar diffiċli bħala n-numru tad-dipendenzi għal klassi tiżdied, u jekk dak l-dipendenzi huma stess għandhom dipendenzi? Dan jista 'pjuttost malajr sar ħmarillejl amministrazzjoni oġġett! Ikteb injezzjoni kontenituri dipendenza (jew oqfsa) ...
Kompli qari "Quick Start Symfony DI (Injezzjoni Dipendenza) Tutorial" »

















































