Quick Start Symfony DI (Injezzjoni Dipendenza) Tutorial
X'inhu l-injezzjoni Dipendenza (DI)?
Injezzjoni Id-dipendenza hija teknika li tippermetti għal oġġetti laxk flimkien fi ħdan applikazzjoni ta 'softwer. Ġeneralment jekk oġġett tesiġi l-aċċess għall-funzjonalità tal ieħor ikun instantiated internament li jwasslu għal sistemi marbutin strettament. Bl-implimentazzjoni injezzjoni dipendenza aħna injetta 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 (firxa $ parametri) { / / Ħtieġa l-adapter database $ Dp = ġdid DecisionParameters (); $ = $ ParameterScore dp-> getScore ($ parametri); / * ... Loġika ftit aktar id-deċiżjoni ... * / ritorn ($ parameterScore> 50); } }
Din il-biċċa tal-kodiċi jingħad li hu sewwa flimkien l-oġġett DecisionParameters. Kitba mill-ġdid ta 'hawn fuq b'mod laxk flimkien Wed għandhom xi ħaġa bħal ....
<? PHP klassi DecisionMaker { privati $ _dp; pubbliku funzjoni __construct ($ DP) { $ Dan il-> _dp = $ dp; } pubbliku funzjoni makeDecision (firxa $ parametri) { $ = $ ParameterScore dan-> _dp-> getScore ($ parametri); / * ... Loġika ftit aktar id-deċiżjoni ... * / ritorn ($ parameterScore> 50); } }
Filwaqt li jiksbu l-benefiċċji tal-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 fl wisq. Per eżempju, dan:
$ = Għażla DecisionMaker ġodda (); eku $ għaŜla> makeDecision (array ("l-isforz '=>" baxxa "," ritorn "=>" għolja "));
issa jsir:
$ Dp = ġdid DecisionParameters (); $ = Għażla ġdida DecisionMaker ($ DP); eku $ għaŜla> makeDecision (array ("l-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 il-dipendenzi nfushom 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" »
















































