Posts tagged: caché

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

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

¿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 $ Parameters) {
         / / 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; __ construct función pública ($ 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 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) '»













Tema por Panorama Themocracy

2 visitantes en liña agora
2 visitantes, 0 bots, 0 membros
Max visitantes hoxe: 19 ás 01:56 am UTC
Este mes: 26 en 2012/04/04 10:27 UTC
Este ano: 69 en 27-02-2012 09:56 pm UTC
Todas as horas: 130 en 28-03-2011 10:40 UTC