Symfony d'inici ràpid de DI (Dependency Injection) Tutorial
Què és la injecció de dependències (DI)?
La injecció de dependència és una tècnica que permet objectes dèbilment acoblats dins d'una aplicació de programari. En general, si un objecte requereix l'accés a la funcionalitat d'un altre que es crea una instància interna de lideratge als sistemes fortament acoblats. Per l'aplicació de la injecció de dependència que s'injecten els objectes necessaris llestos per al seu ús (de vegades també s'ha referit a la inversió de control - COI). Prenguem l'exemple següent:
<? Php classe DecisionMaker { makeDecision funció pública (array $ paràmetres) { / / Necessita l'adaptador de la base de dades $ Dp = new DecisionParameters (); $ = $ ParameterScore dp-> getScore ($ paràmetres); / * ... Alguns decisió més lògica ... * / return ($ parameterScore> 50); } }
Aquest fragment de codi es diu que està estretament acoblat a l'objecte DecisionParameters. La reescriptura de l'anterior en un sentit ambigu, tindríem una mena ....
<? Php class DecisionMaker {private $ _dp; construcció public function __ ($ dp) {$ this-> _dp = $ dp;} makeDecision funció pública (array $ paràmetres) {$ parameterScore = $ this-> _dp-> getScore ($ paràmetres); / * ... Alguns decisió més lògica ... * / Return ($ parameterScore> 50);}}
Si bé l'obtenció dels beneficis del codi dèbilment acoblats que estan afegint una complexitat tal que cada vegada que un objecte es crea una instància que també hem de crear instàncies de les seves dependències i passar aquests en massa. Per exemple, això:
$ Opcions = DecisionMaker nou (); echo $ opcions-> makeDecision (array ('esforç' => 'baixa', 'retorn' => 'alta'));
ara es converteix en:
$ Dp = new DecisionParameters (); $ Opcions = new DecisionMaker ($ dp); echo $ opcions-> makeDecision (array ('esforç' => 'baixa', 'retorn' => 'alta'));
Aquesta situació es torna més dolorós que el nombre de dependències per a una classe s'incrementa, i el que si els mateixos tenen les dependències de les dependències? Això pot molt ràpidament convertir-se en un malson per a l'administració objecte! Introdueixi els contenidors de dependència d'injecció (o marcs) ...
Continuar llegint 'Symfony d'inici ràpid DI (Dependency Injection) Tutorial' »

















































