Guia para injetar dependências em controladores

Guia para injetar dependências em controladores


As fachadas de Laravel apresentam uma interface simples para as classes mais úteis da base de código de Laravel. Você pode obter informações sobre a solicitação atual e a entrada do usuário, a sessão, os caches e muito mais.

Mas se você preferir injetar suas dependências, ou se deseja usar um serviço que não tenha uma fachada, precisará encontrar uma maneira de trazer instâncias dessas classes para o seu controlador.

Todos os métodos do controlador (incluindo os construtores) são resolvidos do contêiner de Laravel, o que significa qualquer coisa que você digita que o contêiner sabe como resolver será injetado automaticamente.

Como um bom exemplo, e se você preferir ter uma instância do objeto de solicitação em vez de usar a fachada? Apenas typehint iluminate \ http \ solicitação em seus parâmetros de método:]

Public Function Store (\ iluminado \ http \ request $ request)

$ organização = nova organização;
$ organização-> nome = $ request-> input ('nome');
$ organização-> anos = $ request-> input ('anos');
$ organização-> save ();
RETURN Redirect ('Organizações');

Então, você definiu um parâmetro que deve ser passado para o método da loja (). E como você digitou, e como o Laravel sabe como resolver esse nome de classe, você terá o objeto de solicitação pronto para você usar em seu método sem trabalho de sua parte. Sem vinculação explícita, não há mais nada - está lá como a variável $ solicitação.

BTW, é assim que eu e muitos outros desenvolvedores de Laravel preferem obter a entrada do usuário: injete uma instância da solicitação e leia a entrada do usuário a partir daí, em vez de confiar na fachada de entrada.