Saltar al contenido principal

Introducción

Cuando usas una herramienta en el “mundo real”, entender cómo funciona te permite utilizarla con más confianza. En el desarrollo de aplicaciones ocurre lo mismo. Entender cómo funcionan tus herramientas de desarrollo te permite construir aplicaciones con más comodidad y seguridad. Esta página ofrece una visión general de alto nivel de cómo funciona el framework Laravel. Al comprender bien el framework, todo dejará de parecerte “magia” y aumentará tu confianza al construir aplicaciones.

Ciclo de vida de una solicitud HTTP

Flujo general

Los primeros pasos

El punto de entrada de todas las solicitudes a una aplicación Laravel es el archivo public/index.php. Cualquier solicitud es reenviada a este archivo mediante la configuración del servidor web (Apache / Nginx). El propio index.php apenas contiene código: es el punto de partida para cargar el resto del framework. El archivo index.php carga la definición del autoloader generada por Composer y obtiene la instancia de la aplicación Laravel desde bootstrap/app.php. Lo primero que hace Laravel es crear la instancia de la aplicación / contenedor de servicios.

Kernel HTTP

A continuación, la solicitud recibida se envía al Kernel HTTP (Illuminate\Foundation\Http\Kernel). El procesamiento se realiza a través del método handleRequest de la instancia de la aplicación. El Kernel HTTP define un array de bootstrappers que se ejecutan antes de que la solicitud sea atendida. Estos bootstrappers realizan lo siguiente: El Kernel HTTP también se encarga de hacer pasar la solicitud por la pila de middlewares de la aplicación. Estos middlewares gestionan la lectura/escritura de la sesión HTTP, verifican si la aplicación está en modo mantenimiento, validan tokens CSRF, etc. La firma del método handle del Kernel HTTP es sencilla: recibe una Request y devuelve una Response. Piensa en el kernel como una gran caja negra que representa toda la aplicación. Le pasas una solicitud HTTP y te devuelve una respuesta HTTP.

Service providers

Uno de los procesos más importantes del bootstrapping del kernel es cargar los service providers de la aplicación. Los service providers son responsables de inicializar los distintos componentes del framework, como la base de datos, las colas, la validación o el enrutamiento. Laravel itera sobre la lista de providers e instancia cada uno. Tras la instanciación, se invoca el método register de todos ellos. A continuación, una vez registrados todos, se llama al método boot de cada uno. De este modo, cuando se ejecuta el método boot, todos los bindings del contenedor ya están registrados y disponibles.
Los service providers definidos por el usuario o de terceros se registran en el archivo bootstrap/providers.php.

Enrutamiento

Una vez que la aplicación se ha inicializado y todos los service providers están registrados, la Request se entrega al enrutador para su despacho. El enrutador despacha la solicitud a una ruta o a un controlador, y ejecuta también los middlewares específicos de la ruta. Los middlewares proporcionan un mecanismo cómodo para filtrar o inspeccionar las solicitudes HTTP que entran en la aplicación. Por ejemplo, Laravel incluye un middleware que comprueba si el usuario está autenticado. Si no lo está, el middleware lo redirige a la pantalla de inicio de sesión. Si lo está, permite que la solicitud continúe hacia el interior de la aplicación. Cuando la solicitud pasa todos los middlewares asociados a la ruta coincidente, se ejecuta la ruta o el método del controlador y se devuelve una respuesta.

Devolución de la respuesta

Cuando la ruta o el método del controlador devuelve una respuesta, esta vuelve a través de los middlewares de la ruta hacia el exterior, dándoles la oportunidad de modificar o inspeccionar la respuesta que enviará la aplicación. Finalmente, cuando la respuesta ha atravesado los middlewares, el método handle del Kernel HTTP devuelve el objeto respuesta al método handleRequest de la instancia de la aplicación, que llama al método send sobre la respuesta devuelta. send envía el contenido de la respuesta al navegador web del usuario. Con esto termina el recorrido completo del ciclo de vida de la solicitud en Laravel.

Ciclo de vida de un comando de consola

Flujo general

Punto de entrada artisan

El punto de entrada de los comandos de consola es el archivo artisan en la raíz del proyecto. Al igual que con las solicitudes HTTP, se cargan el autoloader de Composer y la instancia de la aplicación Laravel. Después, el control se pasa al kernel de consola a través del método handleCommand de la instancia de la aplicación.

Kernel de consola y ejecución de comandos

El kernel de consola, al igual que el HTTP, carga los service providers. Una vez que todos los providers están registrados e iniciados, se cargan los comandos del directorio app/Console/Commands y se ejecuta el comando indicado.
php artisan make:controller UserController
Este comando se procesa así:
  1. El archivo artisan carga el autoloader de Composer
  2. Se genera la instancia de la aplicación desde bootstrap/app.php
  3. El kernel de consola carga los service providers
  4. Se busca y ejecuta el comando make:controller
  5. Se devuelve el código de salida

Céntrate en los service providers

Los service providers son la verdadera clave para inicializar una aplicación Laravel. Se crea la instancia de la aplicación, se registran los service providers y la solicitud se entrega a la aplicación ya inicializada. Eso es todo. Comprender bien cómo se construye e inicializa una aplicación Laravel a través de los service providers es muy valioso. Los service providers definidos por el usuario se almacenan en el directorio app/Providers.
El AppServiceProvider por defecto está casi vacío. Este provider es el lugar ideal para añadir el bootstrapping propio de tu aplicación o los bindings del contenedor de servicios. En aplicaciones grandes se recomienda crear varios service providers, cada uno responsable de una porción específica de la inicialización de los servicios que utiliza la aplicación.

Diferencia entre register y boot

Los service providers tienen dos métodos principales.
MétodoMomentoUso
registerSe llama en todos los providers tras su instanciaciónSolo para registrar bindings en el contenedor de servicios
bootSe llama tras completarse el register de todos los providersView composers, listeners de eventos y otras inicializaciones
No registres listeners de eventos, rutas ni otras funcionalidades dentro del método register. Podrías acabar utilizando por error servicios de providers que aún no se han cargado.

Próximos pasos

Contenedor de servicios

Comprende la inyección de dependencias y el funcionamiento del contenedor de servicios.

Service providers

Aprende a usar los service providers para inicializar tu aplicación.
Última modificación el 13 de julio de 2026