Parece haver muita confusão entre os termos recipiente de injeção de dependência (DiC) e localizador de serviço (SL) . Parte da confusão surge, porque o mesmo serviço (por exemplo, Zend ServiceManager , Zend Di Di ou ZendDiCompiler ) pode ser usado como um DiC ou como um SL .
Usar esse serviço como um DiC significa que o serviço injeta as dependências de fora em uma classe. Em um cenário DiC puro , o DiC é usado apenas durante o bootstrap. Ele cria a classe do controlador e injeta suas dependências de fora, sem ser usado no controlador ( padrão Register Resolve Release ).
Usar o mesmo serviço que um SL significa puxar as dependências de uma classe de dentro dessa classe. Alguns especialistas desaconselham o padrão do localizador de serviço . No entanto, no Zend Framework 2, o padrão de localizador de serviço é comumente usado, pois você pode extrair serviços de dentro dos controladores com $this->serviceLocator->get()
.
Para exemplos de código de DiC e SL , dê uma olhada no meu módulo ZendDiCompiler ZF2!