Até que enfim, o meu amigo José Ricardo resolveu escrever algo de útil no blog dele.
![]()
Apenas recentemente tive contato com um termo intrigante: Injeção de Dependências (Dependency Injection ou apenas DI). A primeira vez que eu o vi foi ao olhar alguns dos subprojetos do symfony que trata justamente disto. Após isto, vi outra notícia sobre injeção de dependências no Java 6. E isso tudo me deixou com uma pulga atrás da orelha, afinal, o que diabos é injeção de dependências? Para que isto serve? Nos parágrafos abaixo compartilho um pouco do que consegui aprender até agora.
Bem, a primeira coisa que eu descobri é que estamos falando apenas de mais um padrão de projetos. Em poucas palavras: Injeção de Dependências significa tirar de uma classe ou sistema a responsabilidade de instanciar suas próprias dependências [1]. Hmm, agora o termo já passa a fazer algum sentido. Já que o componente não vai mais instanciar, alguém terá que fazê-lo (injetar), certo?
E o que podem ser estas tais dependências e como instanciá-las? Considere que uma classe X precise de outra classe Y para funcionar. Uma maneira intuitiva de implementar X é instanciar um objeto de Y no construtor de X e utilizar os métodos desse objeto no restante do código de X. Se você quiser seguir o padrão de DI, entretanto, será preciso remover a instanciação de Y em X. Existem algumas alternativas para fazer esse desacoplamento:
- Fazer a injeção no construtor: uma instância de objeto da classe Y é passada como parâmetro do construtor de X.
- Fazer a injeção através de um setter: adicionamos um (ou vários) métodos à classe X especialmente para a definição de objetos das classes das quais X depende.
- Utilizar um localizador de serviços: um componente no sistema fica responsável por realizar o mapeamento dos componentes e suas dependências e instanciá-los em tempo de execução.
Resumindo para os mais pragmáticos, encontrei uma definição mais prática, porém menos genérica, que irá sanar qualquer tipo de dúvida:
“Injeção de Dependências é passar as dependências de um componente através de construtores, métodos ou através da atribuição direta de campos”
… continue lendo em http://www.josericardo.eti.br/2009/08/16/injecao-de-dependencias-em-php/


