Categoría: Symfony

Quick Start Symfony DI (Inxección de dependencias) Tutorial

Por , sábado 14 de agosto de 2010 14:21

¿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) »»













Tema por Panorama Themocracy

15 convidados en liña agora
8 persoas, 7 bots, 0 membros
Max visitantes hoxe: 16 ás 03:18 UTC
Este mes: 19 en 19-08-2011 06:09 UTC
Este ano: 130 en 28-03-2011 22:40 UTC
Todas as horas: 130 en 28-03-2011 10:40 UTC