Solicitar Ciclo de vida

# Introducción

Cuando se utiliza cualquier herramienta en el "mundo real", te sientes más seguro si entiendes cómo funciona esa herramienta. El desarrollo de aplicaciones no es diferente. Cuando entiendes cómo funcionan tus herramientas de desarrollo, te sientes más cómodo y seguro al usarlas.

El objetivo de este documento es darte una buena visión general de alto nivel de cómo funciona el marco de trabajo de Laravel. Al conocer mejor el marco general, todo se siente menos "mágico" y tendrás más confianza en la construcción de tus aplicaciones. Si no entiendes todos los términos de inmediato, ¡no te desanimes! Sólo intente tener una comprensión básica de lo que está sucediendo, y su conocimiento crecerá a medida que explore otras secciones de la documentación.

# Visión general del ciclo de vida

Lo primero

El punto de entrada para todas las solicitudes a una aplicación Laravel es el archivo public/index.php Todas las solicitudes son dirigidas a este archivo por la configuración de su servidor web (Apache / Nginx). El archivo index.php no contiene mucho código. Más bien, es un punto de partida para cargar el resto del marco.

El archivo index.php carga la definición de autocargador generada por el Compositor, y luego recupera una instancia de la aplicación Laravel de "bootstrap/app.php". La primera acción que realiza Laravel es crear una instancia de la aplicación / service container.

HTTP / Console Kernels

A continuación, la solicitud entrante se envía al kernel HTTP o al kernel de la consola, dependiendo del tipo de solicitud que esté entrando en la aplicación. Estos dos núcleos sirven como la ubicación central por la que fluyen todas las solicitudes. Por ahora, vamos a centrarnos en el núcleo HTTP, que se encuentra en app/Http/Kernel.php.

El kernel HTTP extiende la clase Illuminate\Foundation\Http\Kernel que define un conjunto de bootstrappers que se ejecutarán antes de que se ejecute la petición. Estos bootstrappers configuran el manejo de errores, configuran el registro, detectan el entorno de la aplicación, y realizan otras tareas que deben realizarse antes de que la petición se maneje realmente.

El núcleo HTTP también define una lista de middleware HTTP que todas las solicitudes deben pasar antes de ser manejadas por la aplicación. Estos middleware manejan la lectura y escritura de la session HTTP, determinando si la aplicación está en modo de mantenimiento, verificando el token CSRF, y más.

La firma del método para el método handle del núcleo HTTP es bastante simple: recibir un Request y devolver un Response. Piensa en el kernel como una gran caja negra que representa toda tu aplicación. Aliméntalo con peticiones HTTP y te devolverá respuestas HTTP.

Proveedores del servicio

Una de las acciones más importantes de bootstrapping del Kernel es cargar los proveedores de servicio for your application. Todos los proveedores de servicios para la aplicación están configurados en el arreglo providers del archivo de configuración config/app.php. Primero, el método register será llamado a todos los proveedores, luego, una vez que todos los proveedores se hayan registrado, se llamará al método boot.

Los proveedores de servicios se encargan de la puesta en marcha de los diversos componentes del marco, como la base de datos, la cola, la validación y los componentes de enrutamiento. Dado que ellos arrancan y configuran cada una de las características que ofrece el marco, los proveedores de servicios son el aspecto más importante de todo el proceso de arranque de Laravel.

Solicitud de despacho

Una vez que la solicitud ha sido arrancada y todos los proveedores de servicios han sido registrados,  la Request será entregada al router para su despacho. El enrutador enviará la solicitud a una ruta o a un controlador, así como a cualquier middleware específico de la ruta.

# Enfoque en los proveedores de servicios

Los proveedores de servicios son realmente la clave para arrancar una aplicación de Laravel. Se crea la instancia de la aplicación, se registran los proveedores de servicios y se entrega la solicitud a la aplicación bootstrap. ¡Es realmente así de simple!

Tener una comprensión firme de cómo se construye una aplicación de Laravel y se la hace funcionar a través de proveedores de servicios es muy valioso. Los proveedores de servicios por defecto de su aplicación se almacenan en el directorio app/Providers.

Por defecto, el AppServiceProvider está bastante vacío. Este proveedor es un gran lugar para agregar el bootstrapping de su aplicación y los enlaces del contenedor de servicio. Para aplicaciones grandes, puede crear varios proveedores de servicios, cada uno con un tipo de bootstrapping más granular.