Estamos actualizando el sitio. Durante unos días es posible que veas fallos de diseño o de traducción. La documentación sigue disponible: si una página se ve mal, recárgala más tarde.

Inicio Laravel 10.x Estructura del Directorio

Estructura del Directorio

10.x 7 de mar. de 2026

#Introducción

La estructura predeterminada de una aplicación Laravel está diseñada para ofrecer un excelente punto de partida tanto para aplicaciones grandes como pequeñas. Pero usted es libre de organizar su aplicación como prefiera. Laravel impone casi ninguna restricción sobre dónde se ubica una clase determinada, siempre que Composer pueda cargarla automáticamente.

Примечание

¿Nuevo en Laravel? Visite el Laravel Bootcamp para un recorrido práctico por el framework mientras le guiamos en la construcción de su primera aplicación Laravel.

#El Directorio Raíz

#El Directorio App

El directorio app contiene el código principal de su aplicación. Exploraremos este directorio con más detalle pronto; sin embargo, casi todas las clases de su aplicación estarán en este directorio.

#El Directorio Bootstrap

El directorio bootstrap contiene el archivo app.php que inicia el framework. Este directorio también alberga un directorio cache que contiene archivos generados por el framework para optimizar el rendimiento, como los archivos de caché de rutas y servicios. Normalmente no debería modificar ningún archivo dentro de este directorio.

#El Directorio Config

El directorio config, como su nombre indica, contiene todos los archivos de configuración de su aplicación. Es recomendable revisar todos estos archivos y familiarizarse con todas las opciones disponibles.

#El Directorio Database

El directorio database contiene sus migraciones de base de datos, factories de modelos y seeds. Si lo desea, también puede usar este directorio para alojar una base de datos SQLite.

#El Directorio Public

El directorio public contiene el archivo index.php, que es el punto de entrada para todas las solicitudes que llegan a su aplicación y configura la carga automática. Este directorio también alberga sus recursos como imágenes, JavaScript y CSS.

#El Directorio Resources

El directorio resources contiene sus vistas así como sus recursos sin compilar como CSS o JavaScript.

#El Directorio Routes

El directorio routes contiene todas las definiciones de rutas para su aplicación. Por defecto, Laravel incluye varios archivos de rutas: web.php, api.php, console.php y channels.php.

El archivo web.php contiene rutas que el RouteServiceProvider coloca en el grupo de middleware web, que proporciona estado de sesión, protección CSRF y cifrado de cookies. Si su aplicación no ofrece una API RESTful sin estado, probablemente todas sus rutas estarán definidas en el archivo web.php.

El archivo api.php contiene rutas que el RouteServiceProvider coloca en el grupo de middleware api. Estas rutas están destinadas a ser sin estado, por lo que las solicitudes que entran a la aplicación a través de estas rutas deben autenticarse mediante tokens y no tendrán acceso al estado de sesión.

El archivo console.php es donde puede definir todos sus comandos de consola basados en closures. Cada closure está vinculado a una instancia de comando, lo que permite un enfoque sencillo para interactuar con los métodos IO de cada comando. Aunque este archivo no define rutas HTTP, define puntos de entrada basados en consola (rutas) para su aplicación.

El archivo channels.php es donde puede registrar todos los canales de event broadcasting que su aplicación soporta.

#El Directorio Storage

El directorio storage contiene sus logs, plantillas Blade compiladas, sesiones basadas en archivos, cachés de archivos y otros archivos generados por el framework. Este directorio está dividido en los directorios app, framework y logs. El directorio app puede usarse para almacenar cualquier archivo generado por su aplicación. El directorio framework se usa para almacenar archivos y cachés generados por el framework. Finalmente, el directorio logs contiene los archivos de registro de su aplicación.

El directorio storage/app/public puede usarse para almacenar archivos generados por los usuarios, como avatares de perfil, que deben ser accesibles públicamente. Debe crear un enlace simbólico en public/storage que apunte a este directorio. Puede crear el enlace usando el comando Artisan php artisan storage:link.

La ubicación del directorio storage puede modificarse mediante la variable de entorno LARAVEL_STORAGE_PATH.

#El Directorio Tests

El directorio tests contiene sus pruebas automatizadas. Se proporcionan ejemplos de pruebas unitarias y de características con PHPUnit listos para usar. Cada clase de prueba debe tener el sufijo Test. Puede ejecutar sus pruebas usando los comandos phpunit o php vendor/bin/phpunit. O, si desea una representación más detallada y atractiva de los resultados, puede ejecutar sus pruebas con el comando Artisan php artisan test.

#El Directorio Vendor

El directorio vendor contiene sus dependencias de Composer.

#El Directorio App

La mayor parte de su aplicación se aloja en el directorio app. Por defecto, este directorio está bajo el namespace App y es cargado automáticamente por Composer usando el estándar de autoload PSR-4.

El directorio app contiene una variedad de directorios adicionales como Console, Http y Providers. Piense en los directorios Console y Http como una API hacia el núcleo de su aplicación. El protocolo HTTP y la CLI son ambos mecanismos para interactuar con su aplicación, pero no contienen la lógica de la aplicación. En otras palabras, son dos formas de emitir comandos a su aplicación. El directorio Console contiene todos sus comandos Artisan, mientras que el directorio Http contiene sus controladores, middleware y requests.

Se generarán varios otros directorios dentro del directorio app a medida que use los comandos Artisan make para generar clases. Por ejemplo, el directorio app/Jobs no existirá hasta que ejecute el comando Artisan make:job para generar una clase de trabajo.

Примечание

Muchas de las clases en el directorio app pueden generarse mediante comandos Artisan. Para revisar los comandos disponibles, ejecute el comando php artisan list make en su terminal.

#El Directorio Broadcasting

El directorio Broadcasting contiene todas las clases de canales de broadcast para su aplicación. Estas clases se generan usando el comando make:channel. Este directorio no existe por defecto, pero se creará cuando cree su primer canal. Para aprender más sobre canales, consulte la documentación sobre event broadcasting.

#El Directorio Console

El directorio Console contiene todos los comandos Artisan personalizados para su aplicación. Estos comandos pueden generarse usando el comando make:command. Este directorio también alberga su kernel de consola, donde se registran sus comandos Artisan personalizados y se definen sus tareas programadas.

#El Directorio Events

Este directorio no existe por defecto, pero se creará mediante los comandos Artisan event:generate y make:event. El directorio Events alberga las clases de eventos. Los eventos pueden usarse para alertar a otras partes de su aplicación que una acción determinada ha ocurrido, proporcionando gran flexibilidad y desacoplamiento.

#El Directorio Exceptions

El directorio Exceptions contiene el manejador de excepciones de su aplicación y también es un buen lugar para colocar cualquier excepción lanzada por su aplicación. Si desea personalizar cómo se registran o muestran sus excepciones, debe modificar la clase Handler en este directorio.

#El Directorio Http

El directorio Http contiene sus controladores, middleware y form requests. Casi toda la lógica para manejar las solicitudes que entran a su aplicación se ubicará en este directorio.

#El Directorio Jobs

Este directorio no existe por defecto, pero se creará si ejecuta el comando Artisan make:job. El directorio Jobs alberga los trabajos en cola para su aplicación. Los trabajos pueden ser encolados por su aplicación o ejecutados de forma síncrona dentro del ciclo de vida de la solicitud actual. Los trabajos que se ejecutan de forma síncrona durante la solicitud actual a veces se denominan "comandos" ya que son una implementación del patrón command.

#El Directorio Listeners

Este directorio no existe por defecto, pero se creará si ejecuta los comandos Artisan event:generate o make:listener. El directorio Listeners contiene las clases que manejan sus eventos. Los listeners de eventos reciben una instancia de evento y ejecutan lógica en respuesta a que el evento haya sido disparado. Por ejemplo, un evento UserRegistered podría ser manejado por un listener SendWelcomeEmail.

#El Directorio Mail

Este directorio no existe por defecto, pero se creará si ejecuta el comando Artisan make:mail. El directorio Mail contiene todas sus clases que representan correos electrónicos enviados por su aplicación. Los objetos Mail le permiten encapsular toda la lógica para construir un correo en una clase simple que puede enviarse usando el método Mail::send.

#El Directorio Models

El directorio Models contiene todas sus clases de modelos Eloquent. El ORM Eloquent incluido con Laravel ofrece una implementación ActiveRecord hermosa y sencilla para trabajar con su base de datos. Cada tabla de base de datos tiene un "Modelo" correspondiente que se usa para interactuar con esa tabla. Los modelos le permiten consultar datos en sus tablas, así como insertar nuevos registros.

#El Directorio Notifications

Este directorio no existe por defecto, pero se creará si ejecuta el comando Artisan make:notification. El directorio Notifications contiene todas las notificaciones "transaccionales" que envía su aplicación, como notificaciones simples sobre eventos que ocurren dentro de su aplicación. La funcionalidad de notificaciones de Laravel abstrae el envío de notificaciones a través de varios drivers como email, Slack, SMS o almacenadas en base de datos.

#El Directorio Policies

Este directorio no existe por defecto, pero se creará si ejecuta el comando Artisan make:policy. El directorio Policies contiene las clases de políticas de autorización para su aplicación. Las políticas se usan para determinar si un usuario puede realizar una acción determinada sobre un recurso.

#El Directorio Providers

El directorio Providers contiene todos los service providers para su aplicación. Los service providers inicializan su aplicación vinculando servicios en el contenedor de servicios, registrando eventos o realizando cualquier otra tarea para preparar su aplicación para las solicitudes entrantes.

En una aplicación Laravel nueva, este directorio ya contendrá varios providers. Usted es libre de agregar sus propios providers a este directorio según sea necesario.

#El Directorio Rules

Este directorio no existe por defecto, pero se creará si ejecuta el comando Artisan make:rule. El directorio Rules contiene los objetos de reglas de validación personalizadas para su aplicación. Las reglas se usan para encapsular lógica de validación compleja en un objeto simple. Para más información, consulte la documentación de validación.