Ciclo de vida de laravel

Ciclo de vida de laravel

 

El punto de entrada a cualquier solicitud dentro de laravel es el archivo public/index.php. Todas las solicitudes se dirigen a dicho archivo. Este archivo no tiene demasiado código. Solo es un punto de partida para cargar todo el resto del framework.

 

El index.php carga el autoloader generado por composer 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 del contenedor de application/service

 

Núcleos HTTP/Consola

A continuación, la solicitud entrante se envía al kernel HTTP o al kernel de la consola, según el tipo de solicitud que se haya ingresado dentro de la aplicación. Estos dos núcleos sirven como la ubicación central a través de la cual van a fluir todas las solicitudes. Por el momento concentrémonos en el núcleo HTTP que se encuentra en app/http/kernel.php

 

El núcleo HTTP extiende de  la clase iluminate/foundation/http/kernel la cual define una matriz bootstrappers que se ejecutará antes de que se ejecute la solicitud. Estos programas precios 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 solicitud  se maneje realmente. Por lo general, estas clases manejan la configuración interna de Laravel de la que no deberás preocuparte.

 

El kernel HTTP también define una lista de middleware, por lo que deberán de pasar todas las solicitudes antes de que la aplicación continúe. Estos middleware manejan la lectura y escritura de la sesión HTTP, determina si la aplicación está en modo de mantenimiento, verificando token CSRF y más.

 

El meoto handle del núcleo HTTP es bastante simple, recibe un Request y devuelve un Reponse. 

 

Proveedores de servicio

Una de las acciones de arranque del kernel más importante es cargar los proveedores de servicios de la aplicación. Todos los provedores de servicio se encuentran configurados en la matriz providers del archivo config/app.php

 

Laravel iterara a través de la lista de proveedores e instancias a cada uno de ellos. Después de ser instanciados, llamará al método registró en todos los proveedores. Posteriormente una vez registrados todos los proveedores, se llamará el método boot de cada proveedor. Esto es para que los proveedores de servicio puedan depender de que cada enlace de contenedor esté registrado y disponible en el momento en que se ejecute el método boot.

 

Los proveedores de servicios son los responsables de iniciar todos los diversos componentes del framework, como lo son la base de datos, la cola, la validación y los componentes de enrutamiento. Esencialmente todas las características principales que ofrece Laraven son iniciadas y configuradas por un proveedor de servicio.

 

Dado que arrancan y configuran tantas funciones que ofrece el framework, los proveedores de servicios son el aspecto más importante de todo el proceso de arranque de Laravel.

 

Enrutamiento.

El enrutamiento es uno de los proveedores de servicio más importantes dentro de laravel, el cual se encuentra en app/providers/RouteServiceProvider. Dicho proveedor carga los archivos contenidos en el directorio de routers.

 

Una vez que se haya iniciado la aplicación y se hayan registrado todos los proveedores de servicios, Request se entregará al enrutador para su envío. El enrutador enviará dicha solicitud a una ruta o controlador, así como también ejecutará cualquier middleware especificado para dicha ruta.

 

Los middleware proporcionan una capa adicional de seguridad, es un mecanismo para poder filtrar o examinar las solicitudes HTTP que ingresan a la aplicación. Por ejemplo, laravel incluye por defecto un middleware que verifica si el usuario de tu aplicación está autenticado. Si no se encuentra autenticado, el middleware redirigirá al usuario a la pantalla de login. Sin embargo si está autenticado, el middleware permite que dicha solicitud continúe. 

 

Algunos middleware se asignan a todas las rutas dentro de la aplicación, como los definidos en la variable $middleware del kernet HTTP, mientras que otros solo se asignan a rutas específicas o un grupo de rutas.

 

avatar jose luis luna rubio

Quieres estudiar en Platzi?

Estudia mas de 240 cursos y 48 carreras

Obten 1 Mes Gratis