Quick Start Symfony DI (Atkarība Injection) Tutorial
Kas ir atkarība Injection (DI)?
Atkarība injekcijām ir tehnika, kas ļauj brīvi sapārotas objektu lietojumprogrammu. Parasti, ja objekts ir nepieciešama piekļuve funkcionalitāti citas būtu instantiated iekšēji izraisa tuvu sapārotas sistēmas. Īstenojot atkarība injekcijas mēs injicēt nepieciešami objekti ir gatavi lietošanai (dažkārt sauc arī inversija kontroles - IOC). Veikt šādu piemēru:
<? Php klase DecisionMaker { valsts funkciju makeDecision (masīvs $ parametri) { / / Jums vajadzīga datubāzes adapteri $ Dp = jauni DecisionParameters (); $ ParameterScore = $ DP-> getScore ($ parametriem); / * ... Daži vairāk lēmumu loģiku ... * / atgriešanās ($ parameterScore> 50); } }
Šis kods gabals esot cieši saistīts ar DecisionParameters objektu. Pārrakstīšanu iepriekš brīvi sapārotas veidā mēs ir kaut kas līdzīgs ....
<? Php klase DecisionMaker { privātā $ _dp; valsts funkciju __construct ($ DP) { $ This-> _dp = $ dp; } valsts funkciju makeDecision (masīvs $ parametri) { $ ParameterScore = $ šīs-> _dp-> getScore ($ parametriem); / * ... Daži vairāk lēmumu loģiku ... * / atgriešanās ($ parameterScore> 50); } }
Lai gan iegūt priekšrocības brīvi sapārotas kodu, mēs pievienojam sarežģītību tādi, ka katru reizi, kad objekts ir instantiated mums ir arī instantiate savas kolonijas un nodot šo too. Piemēram, šī:
$ Izvēle = jauni DecisionMaker (); echo $ izvēle-> makeDecision (array ('pūles "=>" zema "," atgriešanās "=>" augsta "));
tagad kļūst:
$ Dp = jauni DecisionParameters (); $ Izvēle = jauni DecisionMaker ($ DP); echo $ izvēle-> makeDecision (array ('pūles "=>" zema "," atgriešanās "=>" augsta "));
Šī situācija kļūst sāpīgi, jo atkarības klases skaits ir palielināts, un kas notiks, ja atkarības pašām ir atkarības? Tas var ļoti ātri kļūt objektu pārvaldes murgs! Ievadiet atkarība injekcijas konteineros (vai sistēmas) ...
Turpināt lasījums "Quick Start Symfony DI (Atkarība Injection) Tutorial" »
















































