Guía de inicio rápido Symfony DI (inyección de dependencia) Tutorial
¿Qué es la inyección de dependencias (DI)?
La inyección de dependencia es una técnica que permite a los objetos débilmente acoplados dentro de una aplicación de software. En general, si un objeto requiere el acceso a la funcionalidad de otro sería una instancia interna que lleva a los sistemas fuertemente acoplados. Mediante la aplicación de la inyección de dependencia que se inyectan los objetos necesarios listos para su uso (a veces también se refirió a la inversión de control - COI). Tomemos el siguiente ejemplo:
<? Php clase DecisionMaker { makeDecision función pública (array $ parametros) { / / Necesita el adaptador de base de datos $ Dp = new DecisionParameters (); $ ParameterScore = $ dp-> getScore ($ parametros); / * ... Decisión un poco más de lógica ... * / return ($ parameterScore> 50); } }
Este fragmento de código se dice que es fuertemente acoplado con el objeto DecisionParameters. La reescritura de la anterior de una manera imprecisa que tendríamos algo así como ....
<? Php clase DecisionMaker { privado $ _dp; public function __construct ($ dp) { $ This-> _dp = $ dp; } makeDecision función pública (array $ parametros) { $ ParameterScore = $ this-> _dp-> getScore ($ parametros); / * ... Decisión un poco más de lógica ... * / return ($ parameterScore> 50); } }
Mientras que obtener los beneficios del código débilmente acoplados estamos añadiendo una complejidad tal que cada vez que un objeto es una instancia que también tenemos que crear instancias de sus dependencias y en pasar estos también. Por ejemplo, esto:
$ = Elección DecisionMaker nuevo (); echo $ opciones-> makeDecision (array ('esfuerzo' => 'bajo', 'return' => 'alta'));
ahora se convierte en:
$ Dp = new DecisionParameters (); $ Opciones = new DecisionMaker ($ dp); echo $ opciones-> makeDecision (array ('esfuerzo' => 'bajo', 'return' => 'alta'));
Esta situación se vuelve más doloroso que el número de dependencias de una clase es mayor, y lo que si las dependencias se han dependencias? Esto puede muy rápidamente convertirse en una pesadilla para la administración de objetos! Introduzca los contenedores inyección de dependencia (o marcos) ...
Continue reading 'Symfony de inicio rápido DI (inyección de dependencia) Tutorial' »
















































