Saltar contenido

Estructura de Directorios

Introducción

La estructura de aplicación predeterminada de Laravel está diseñada para proporcionar un excelente punto de partida tanto para aplicaciones grandes como pequeñas. Pero puedes organizar tu aplicación como desees. Laravel impone casi ninguna restricción sobre dónde se puede ubicar una clase dada, siempre que Composer pueda autoload la clase.

[!NOTE] ¿Nuevo en Laravel? Consulta el Laravel Bootcamp para un recorrido práctico por el framework mientras te guiamos en la construcción de tu primera aplicación Laravel.

El Directorio Raíz

El Directorio de la Aplicación

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

El Directorio de Bootstrap

El directorio bootstrap contiene el archivo app.php que inicializa el framework. Este directorio también alberga un directorio cache que contiene archivos generados por el framework para la optimización del rendimiento, como los archivos de caché de rutas y servicios.

El Directorio de Configuración

El directorio config, como su nombre implica, contiene todos los archivos de configuración de tu aplicación. Es una buena idea leer todos estos archivos y familiarizarte con todas las opciones disponibles para ti.

El Directorio de la Base de Datos

El directorio database contiene tus migraciones de base de datos, fábricas de modelos y semillas. Si lo deseas, también puedes usar este directorio para contener una base de datos SQLite.

El Directorio Público

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

El Directorio de Recursos

El directorio resources contiene tus vistas así como tus activos sin compilar, como CSS o JavaScript.

El Directorio de Rutas

El directorio routes contiene todas las definiciones de rutas para tu aplicación. Por defecto, se incluyen dos archivos de rutas con Laravel: web.php y console.php. El archivo web.php contiene rutas que Laravel coloca en el grupo de middleware web, que proporciona estado de sesión, protección CSRF y cifrado de cookies. Si tu aplicación no ofrece una API RESTful sin estado, entonces es muy probable que todas tus rutas estén definidas en el archivo web.php. El archivo console.php es donde puedes definir todos tus comandos de consola basados en funciones anónimas. Cada función anónima está vinculada a una instancia del comando, lo que permite un enfoque simple para interactuar con los métodos de IO de cada comando. Aunque este archivo no define rutas HTTP, define puntos de entrada basados en consola (rutas) en tu aplicación. También puedes programar tareas en el archivo console.php. Opcionalmente, puedes instalar archivos de ruta adicionales para las rutas de API (api.php) y los canales de transmisión (channels.php), a través de los comandos Artisan install:api y install:broadcasting. El archivo api.php contiene rutas que están diseñadas para ser sin estado, por lo que las solicitudes que ingresan a la aplicación a través de estas rutas están destinadas a ser autenticadas a través de tokens y no tendrán acceso al estado de la sesión. El archivo channels.php es donde puedes registrar todos los canales de broadcasting de eventos que tu aplicación admite.

El Directorio de Almacenamiento

El directorio storage contiene tus registros, plantillas Blade compiladas, sesiones basadas en archivos, cachés de archivos y otros archivos generados por el framework. Este directorio se divide en directorios app, framework y logs. El directorio app puede usarse para almacenar cualquier archivo generado por tu aplicación. El directorio framework se utiliza para almacenar archivos y cachés generados por el framework. Finalmente, el directorio logs contiene los archivos de registro de tu aplicación. El directorio storage/app/public se puede utilizar para almacenar archivos generados por el usuario, como avatares de perfil, que deben ser de acceso público. Debes crear un enlace simbólico en public/storage que apunte a este directorio. Puedes crear el enlace utilizando el comando Artisan php artisan storage:link.

El Directorio de Pruebas

El directorio tests contiene tus pruebas automatizadas. Se proporcionan ejemplos de pruebas unitarias y pruebas de características de Pest o PHPUnit desde el principio. Cada clase de prueba debe tener el sufijo Test. Puedes ejecutar tus pruebas utilizando los comandos /vendor/bin/pest o /vendor/bin/phpunit. O, si deseas una representación más detallada y bonita de los resultados de tus pruebas, puedes ejecutar tus pruebas utilizando el comando Artisan php artisan test.

El Directorio de Proveedores

El directorio vendor contiene tus dependencias de Composer.

El Directorio de la Aplicación

La mayoría de tu aplicación se encuentra en el directorio app. Por defecto, este directorio está en un espacio de nombres bajo App y se carga automáticamente con Composer utilizando el estándar de autoloading PSR-4. Por defecto, el directorio app contiene los directorios Http, Models y Providers. Sin embargo, con el tiempo, se generarán una variedad de otros directorios dentro del directorio app a medida que uses los comandos Artisan make para generar clases. Por ejemplo, el directorio app/Console no existirá hasta que ejecutes el comando Artisan make:command para generar una clase de comando. Tanto los directorios Console como Http se explican más a fondo en sus respectivas secciones a continuación, pero piensa en los directorios Console y Http como proveedores de una API en el núcleo de tu aplicación. El protocolo HTTP y la CLI son ambos mecanismos para interactuar con tu aplicación, pero no contienen realmente la lógica de la aplicación. En otras palabras, son dos formas de emitir comandos a tu aplicación. El directorio Console contiene todos tus comandos Artisan, mientras que el directorio Http contiene tus controladores, middleware y solicitudes.

[!NOTA] Muchas de las clases en el directorio app pueden ser generadas por Artisan a través de comandos. Para revisar los comandos disponibles, ejecuta el comando php artisan list make en tu terminal.

El Directorio de Transmisión

El directorio Broadcasting contiene todas las clases de canal de transmisión para tu aplicación. Estas clases se generan utilizando el comando make:channel. Este directorio no existe por defecto, pero se creará para ti cuando crees tu primer canal. Para aprender más sobre los canales, consulta la documentación sobre transmisión de eventos.

El Directorio de la Consola

El directorio Console contiene todos los comandos Artisan personalizados para tu aplicación. Estos comandos se pueden generar utilizando el comando make:command.

El Directorio de Eventos

Este directorio no existe por defecto, pero será creado para ti por los comandos Artisan event:generate y make:event. El directorio Events alberga clases de eventos. Los eventos pueden usarse para alertar a otras partes de tu aplicación que se ha producido una acción dada, proporcionando una gran flexibilidad y desacoplamiento.

El directorio de Excepciones

El directorio Exceptions contiene todas las excepciones personalizadas para tu aplicación. Estas excepciones se pueden generar utilizando el comando make:exception.

El Directorio Http

El directorio Http contiene tus controladores, middleware y solicitudes de formulario. Casi toda la lógica para manejar las solicitudes que ingresan a tu aplicación se colocará en este directorio.

El Directorio de Trabajos

Este directorio no existe por defecto, pero se creará para ti si ejecutas el comando Artisan make:job. El directorio Jobs alberga los jobs encolables para tu aplicación. Los jobs pueden ser encolados por tu aplicación o ejecutarse de manera síncrona dentro del ciclo de vida de la solicitud actual. Se refiere a los jobs que se ejecutan de manera síncrona durante la solicitud actual como "comandos" ya que son una implementación del patrón de comando.

El Directorio de Listeners

Este directorio no existe por defecto, pero se creará para ti si ejecutas los comandos Artisan event:generate o make:listener. El directorio Listeners contiene las clases que manejan tus eventos. Los oyentes de eventos reciben una instancia de evento y realizan lógica en respuesta a que se dispare el evento. Por ejemplo, un evento UserRegistered podría ser manejado por un oyente SendWelcomeEmail.

El Directorio de Correo

Este directorio no existe por defecto, pero se creará para ti si ejecutas el comando Artisan make:mail. El directorio Mail contiene todas tus clases que representan correos electrónicos enviados por tu aplicación. Los objetos Mail te permiten encapsular toda la lógica de construcción de un correo electrónico en una sola clase simple que se puede enviar utilizando el método Mail::send.

El Directorio de Modelos

El directorio Models contiene todas tus clases de modelo Eloquent. El ORM Eloquent incluido con Laravel proporciona una hermosa y simple implementación de ActiveRecord para trabajar con tu base de datos. Cada tabla de base de datos tiene un "Modelo" correspondiente que se utiliza para interactuar con esa tabla. Los modelos te permiten consultar datos en tus tablas, así como insertar nuevos registros en la tabla.

El Directorio de Notificaciones

Este directorio no existe por defecto, pero se creará para ti si ejecutas el comando Artisan make:notification. El directorio Notifications contiene todas las notificaciones "transaccionales" que envía tu aplicación, como notificaciones simples sobre eventos que ocurren dentro de tu aplicación. La función de notificaciones de Laravel abstrae el envío de notificaciones a través de una variedad de controladores como correo electrónico, Slack, SMS, o almacenadas en una base de datos.

El Directorio de Políticas

Este directorio no existe por defecto, pero se creará para ti si ejecutas el comando Artisan make:policy. El directorio Policies contiene las clases de política de autorización para tu aplicación. Las políticas se utilizan para determinar si un usuario puede realizar una acción dada contra un recurso.

El Directorio de Proveedores

El directorio Providers contiene todos los proveedores de servicios para tu aplicación. Los proveedores de servicios inician tu aplicación vinculando servicios en el contenedor de servicios, registrando eventos o realizando cualquier otra tarea para preparar tu aplicación para las solicitudes entrantes. En una nueva aplicación Laravel, este directorio ya contendrá el AppServiceProvider. Puedes añadir tus propios proveedores a este directorio según sea necesario.

El Directorio de Reglas

Este directorio no existe por defecto, pero se creará para ti si ejecutas el comando Artisan make:rule. El directorio Rules contiene los objetos de regla de validación personalizados para tu aplicación. Las reglas se utilizan para encapsular lógica de validación complicada en un objeto simple. Para obtener más información, consulta la documentación de validación.