Quick Start Symfony DI (Inxección de dependencias) Tutorial
¿Que é Injeção de Dependencia (DI)?
Inxección de dependencia é unha técnica que permite a obxectos feblemente encaixados dentro dun programa de software. Xeralmente, se un obxecto require acceso a funcionalidade dun outro que sería instanciado internamente levando a sistemas fortemente encaixados. A través da implementación de inxección de dependencias que inxectar os obxectos necesarios listo para o seu uso (por veces tamén referida inversión de control - COI). Tomé o seguinte exemplo:
<? PHP decisor clase { makeDecision función pública (array $ Parameters) { / / Necesita un adaptador de base de datos $ DP = new DecisionParameters (); ParameterScore $ = $ dp-> getScore ($ parámetros); / * ... Lóxica de decisión un pouco máis ... * / return ($ parameterScore> 50); } }
Este anaco de código dise ser fortemente encaixados ao obxecto DecisionParameters. Reescribir o anterior de forma flexible, teríamos algo ....
<? PHP decisor clase { private $ _dp; public function __construct ($ dp) { $ This-> _dp = $ dp; } makeDecision función pública (array $ Parameters) { ParameterScore $ = $ this-> _dp-> getScore ($ parámetros); / * ... Lóxica de decisión un pouco máis ... * / return ($ parameterScore> 50); } }
Aínda que a gañar os beneficios de código de baixo acoplamento estamos engadindo complexidade tal que cada vez que un obxecto é instanciado tamén temos que instancias súas dependencias e pasar estes en demasiado. Por exemplo, esta:
= $ Escolla decisor new (); echo $ escolla> makeDecision (array ('esforzo' => 'Baixar', 'return' => 'alta'));
torna-se agora:
$ DP = new DecisionParameters (); $ Escolla = new decisor ($ dp); echo $ escolla> makeDecision (array ('esforzo' => 'Baixar', 'return' => 'alta'));
Esta situación faise máis doloroso como o número de dependencias dunha clase é aumentado, e que as dependencias propias dependencias? Isto pode rapidamente converterse nun pesadelo administración obxecto! Introduza recipientes de inxección de dependencia (ou frameworks) ...
Continúe lendo 'Quick Start Symfony DI Tutorial (Inxección de dependencias) »»
















































