Quick Start Symfony DI (Dependency Injection) Tutorial
O que é Injeção de Dependência (DI)?
Injeção de dependência é uma técnica que permite a objetos fracamente acoplados dentro de um aplicativo de software. Geralmente, se um objeto requer acesso à funcionalidade de um outro que seria instanciado internamente levando a sistemas fortemente acoplados. Através da implementação de injeção de dependência que injetar os objetos necessários pronto para uso (por vezes também referida inversão de controle - COI). Tome o seguinte exemplo:
<? Php decisor classe { makeDecision função pública (array $ parameters) { / / Precisa de um adaptador de banco de dados $ Dp = new DecisionParameters (); ParameterScore $ = $ dp-> getScore ($ parametros); / * ... Lógica de decisão um pouco mais ... * / return ($ parameterScore> 50); } }
Este pedaço de código é dito ser fortemente acoplados ao objeto DecisionParameters. Reescrever o acima de uma forma flexível, teríamos algo como ....
<? Php decisor classe { private $ _dp; public function __construct ($ dp) { $ This-> _dp = $ dp; } makeDecision função pública (array $ parameters) { ParameterScore $ = $ this-> _dp-> getScore ($ parametros); / * ... Lógica de decisão um pouco mais ... * / return ($ parameterScore> 50); } }
Embora a ganhar os benefícios de código de baixo acoplamento estamos adicionando complexidade tal que cada vez que um objeto é instanciado também temos que instanciar suas dependências e passar estes em demasiado. Por exemplo, esta:
= $ Escolha decisor new (); echo $ escolha> makeDecision (array ('esforço' => 'baixo', 'return' => 'alta'));
torna-se agora:
$ Dp = new DecisionParameters (); $ Escolha = new decisor ($ dp); echo $ escolha> makeDecision (array ('esforço' => 'baixo', 'return' => 'alta'));
Esta situação torna-se mais doloroso como o número de dependências de uma classe é aumentado, e que se as dependências próprias dependências? Isto pode rapidamente se tornar um pesadelo administração objeto! Digite recipientes de injeção de dependência (ou frameworks) ...
Continue lendo 'Quick Start Symfony DI Tutorial (Dependency Injection) »»
















































