Tag Archive | "engenharia de software"

Tags:

Injeção de Dependências em PHP

Posted on 17 August 2009 by googlereaderboy

Até que enfim, o meu amigo José Ricardo resolveu escrever algo de útil no blog dele. 8-)

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/


Comments (2)

Andando por aí...