Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Container de serviços

Fala mestre, eu aqui mais uma vez...

Pelo que notei o symfony tem uma expertise de achar as dependências automaticamente (provavelmente pelo type hint, reflection, etc), sem eu precisar informar ao meu container. Mas em qual arquivo eu cadastro meus serviços manualmente? A minha pergunta é por que quero fazer a inversão de dependência, trabalhar com algumas interfaces.

4 respostas

Oi mestre,

Estava pesquisando aqui e até consegui cadastrar serviços pelo arquivo services.yaml. Porém eu queria ter uma forma de criar factories onde tivesse acesso a todo meu container, igual na psr 11, por que alguns serviços dependem de outros para serem criados. Não sei se consegui ser claro na dúvida..

solução!

Consegui acessar o container através da classe Symfony\Component\DependencyInjection\ContainerBuilder e fazer o que eu queria. Basicamente a minha idéia era passar uma interface MedicoRepository para o controller e criar uma factory para retornar uma implementação dessa interface.

O problema é que demorei bastante pra descobrir que para acessar o serviço do entity manager era através da chave "doctrine.orm.entity_manager". Isso poderia ser melhor documentado já que essa integração vem praticamente pronta, acabei descobrindo meio que no chute.

Eu estava tentando através do nome da interface:

$container->get(EntityManagerInterface::class)

, o que seria mais óbvio, mas era através dessa chave

$container->get("doctrine.orm.entity_manager").

Sensacional, Diogo.

Primeiro parabéns por ter essa iniciativa de aplicar as melhores práticas no código. Segundo parabéns por conseguir solucionar sozinho e por último parabéns por compartilhar a solução com a gente.

<3

Valeu mestre, tentando me inspirar em você!!