Ciclo de vida de una aplicación en Laravel

Clase 22 de 33Curso Avanzado de Laravel

Aunque parezca magia, Laravel no hace las cosas exentas de las funcionalidades base de Php, mientras más trabajamos con Laravel, nos surgen preguntas de cómo funcionará todo. En esta clase vamos a explicar brevemente cómo actúa Laravel desde el momento que un usuario hace una petición a nuestro servidor y cómo consigue una respuesta.

Esto se llama Ciclo de vida de una Petición. Laravel nos hace todo tan fácil, que el cómo funciona queda en segundo plano, pero conocerlo hace que nos sintamos más cómodos al trabajar y que desaparezca esa sensación de que todo es por arte de magia.

Laravel está pensado para que el DocumentRoot de la aplicación sea la carpeta public. En ella vamos a encontrar el punto de entrada a todas las peticiones que reciba nuestro sitio web, el cual es el archivo index.php, en cambio si la aplicación es CLI tendremos el archivo artisan.php

Estos archivos no tienen mucho código, pero lo poco que tienen es muy importante debido a que se carga la instancia de Laravel a través de la carga automática generada por Composer, que veremos más adelante.

Si abrimos el archivo bootstrap/app.php encontramos el new de mi aplicación, y además cargamos algunas clases importantes dentro del Contenedor de Laravel.

Después de cargar, el siguiente paso, dependiendo del tipo de solicitud, el framework dirige el procesamiento al Kernel HTTP o al Kernel de Consola. Estos dos núcleos son donde todo fluye en Laravel.

El Kernel HTTP, ubicado en app/Http/Kernel.php extiende de una clase base del framework que tiene un arreglo llamado bootstrappers que se ejecutan antes de que la petición se ejecute, los mismos configuran tareas como la captura de errores, entre otros, además el Kernel define una lista de middleware HTTP que todas las solicitudes deben pasar antes de que la aplicación las maneje. Estos middleware manejan la lectura y escritura de la sesión HTTP, determinan si la aplicación está en modo de mantenimiento, verifican el token CSRF, entre otras cosas.

El siguiente paso del Kernel es cargar proveedores de servicios (Service Providers) como parte de la acción de arranque. Dentro de config/app.php podemos encontrar los proveedores necesarios para la aplicación. Los mismos se registran y una vez que todos los proveedores estén registrados, se llamará al método de boot de cada uno.

Una vez que la aplicación ha sido iniciada y todos los proveedores de servicios están registrados y arrancados, la solicitud será entregada al Router para su envío. El Router enviará la solicitud a una ruta o controlador, así como ejecutará cualquier middleware específico de la ruta.

El Router dirigirá la solicitud HTTP a un controlador o devolverá una vista o respuestas directamente omitiendo el controlador. Estas rutas se colocarán en app/routes.php.

Los controladores normalmente ubicados en app/Http/Controllers realizarán acciones específicas y envían datos a una vista.

Las vistas ubicadas en resources/views darán formato a los datos de manera adecuada, proporcionando la respuesta HTTP y con esto cerrando el ciclo de vida.

En la siguiente clase, veremos un poco sobre los Service Containers, qué son y qué función cumple dentro de Laravel.