Quick Start Symfony DI Tutorial (Inxección de dependencias)
¿Que é Inxección de dependencias (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 á función doutro sería instanciado internamente líder para sistemas estreitamente encaixadas. Por inxección de dependencia implementación injetamos os obxectos necesarios listo para o seu uso (por veces tamén referida investimento de control - IOC). Vexa o seguinte exemplo:
<? PHP decisor clase { makeDecision función pública (array $ parámetros) { / / Hai que do adaptador de base de datos $ DP = new DecisionParameters (); ParameterScore $ = $ dp-> getScore (R $ parámetros); / * ... Lóxica de decisión un pouco máis ... * / return ($ parameterScore> 50); } }
Este anaco de código está dito para ser firmemente axustado ao obxecto DecisionParameters. Reescrevendo o anterior dun xeito flexible, teriamos algo ....
<? PHP decisor clase { private $ _dp; public function __ construct ($ dp) { $ This-> _dp = $ dp; } makeDecision función pública (array $ parámetros) { ParameterScore $ = $ this-> _dp-> getScore (R $ parámetros); / * ... Lóxica de decisión un pouco máis ... * / return ($ parameterScore> 50); } }
A pesar de 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 instanciar súas dependencias e paso-los moito. Por exemplo, este:
$ Decisor elección = new (); echo $ elección> makeDecision (array ('esforzo' => 'Baixar', 'return' => 'alta'));
torna-se agora:
$ DP = new DecisionParameters (); $ Escolla = new decisor ($ dp); echo $ elección> makeDecision (array ('esforzo' => 'Baixar', 'return' => 'alta'));
Esta situación se fai máis doloroso como o número de dependencias dunha clase é aumentado, e que as dependencias se teñen dependencias? Isto pode rapidamente se tornar un pesadelo administración obxecto! Introduza recipientes inxección de dependencia (ou frameworks) ...
Continúe lendo "Quick Start Symfony DI Tutorial (Inxección de dependencias) '»

















































