Guía para inyectar dependencias en controladores

Guía para inyectar dependencias en controladores


Las fachadas de Laravel presentan una interfaz simple para las clases más útiles en la base de código de Laravel. Puede obtener información sobre la solicitud actual y la entrada del usuario, la sesión, los cachés y mucho más.

Pero si prefiere inyectar sus dependencias, o si desea utilizar un servicio que no tenga una fachada, deberá encontrar alguna forma de traer instancias de estas clases a su controlador.

Todos los métodos del controlador (incluidos los constructores) se resuelven del contenedor de Laravel, lo que significa que cualquier cosa que escriba que el contenedor sabe cómo resolver se inyectará automáticamente.

Como buen ejemplo, ¿qué pasa si prefiere tener una instancia del objeto de solicitud en lugar de usar la fachada?? Simplemente typeHint iluminate \ http \ solicitud en sus parámetros de método:]

tienda de funciones públicas (\ iluminate \ http \ solicitud $ solicitud)

$ organización = nueva organización;
$ organización-> name = $ request-> input ('name');
$ organización-> años = $ request-> entrada ('años');
$ organización-> save ();
return redirect ('organizaciones');

Por lo tanto, ha definido un parámetro que debe pasar al método Store (). Y dado que lo escribió, y dado que Laravel sabe cómo resolver ese nombre de clase, tendrá el objeto de solicitud listo para que usted use en su método sin trabajo de su parte. Sin vinculación explícita, no hay nada más, solo está allí como la variable de solicitud $.

Por cierto, así es como yo y muchos otros desarrolladores de Laravel preferimos obtener la entrada del usuario: inyectar una instancia de la solicitud y leer la entrada del usuario desde allí, en lugar de confiar en la fachada de entrada.