1. Primeros pasos
  2. Estructura del Directorio

Introducción

La estructura predeterminada de la aplicación Laravel está destinada a proporcionar un excelente punto de partida tanto para aplicaciones grandes como pequeñas. Pero eres libre de organizar tu aplicación como desees. Laravel impone casi ninguna restricción sobre dónde se encuentra una clase en particular, siempre y cuando Composer pueda cargar automáticamente la clase.

Nota ¿Eres nuevo en Laravel? Echa un vistazo al Bootcamp de Laravel para obtener 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 con más detalle pronto; sin embargo, casi todas las clases de tu 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 contiene 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. Por lo general, no deberías necesitar 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 tu aplicación. Es una excelente idea leer todos estos archivos y familiarizarte con todas las opciones disponibles para ti.

El Directorio de Bases 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 almacenar 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 activos, como imágenes, JavaScript y CSS.

El Directorio de Recursos

El directorio resources contiene tus vistas así como tus activos en bruto, no compilados, como CSS o JavaScript.

El Directorio routes

El directorio routes contiene todas las definiciones de rutas para tu 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 el estado de la sesión, protección CSRF y cifrado de cookies. Si tu aplicación no ofrece una API RESTful sin estado, es probable que todas tus rutas esté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 ingresan a la aplicación a través de estas rutas deben estar autenticadas mediante tokens y no tendrán acceso al estado de la sesión.

El archivo console.php es donde puedes definir todos tus comandos de consola basados en cierres. Cada cierre está vinculado a una instancia de comando, lo que permite un enfoque simple para interactuar con los métodos de E/S de cada comando. Aunque este archivo no define rutas HTTP, define puntos de entrada (rutas) basados en consola para tu aplicación.

El archivo channels.php es donde puedes registrar todos los canales de transmisión de eventos que admite tu aplicación.

El Directorio Almacenamiento

El directorio storage contiene tus registros, plantillas Blade compiladas, sesiones basadas en archivos, cachés basadas en archivos y otros archivos generados por el framework. Este directorio está segregado en los directorios app, framework y logs. El directorio app se puede usar 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 usar para almacenar archivos generados por el usuario, como avatares de perfil, que deben ser públicamente accesibles. 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 pruebas de unidad y pruebas de características PHPUnit de ejemplo. Cada clase de prueba debe tener el sufijo de la palabra Test. Puedes ejecutar tus pruebas utilizando los comandos phpunit o php 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 Vendedores

El directorio vendor contiene las dependencias de Composer de tu aplicación.

El Directorio de la Aplicación

La mayoría de tu aplicación se encuentra en el directorio app. Por defecto, este directorio tiene un espacio de nombres App y se carga automáticamente con Composer utilizando el estándar de carga automática PSR-4.

El directorio app contiene una variedad de directorios adicionales como Console, Http y Providers. Piensa en los directorios Console y Http como proveedores de una API hacia el núcleo de tu aplicación. El protocolo HTTP y la CLI son dos mecanismos para interactuar con tu aplicación, pero no contienen lógica de la aplicación en sí. 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.

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

Nota Muchas de las clases en el directorio app pueden generarse mediante Artisan a través de comandos. Para revisar los comandos disponibles, ejecuta el comando php artisan list make en tu terminal.

El Directorio de Broadcasting

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

El Directorio de Consola

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

El Directorio de Eventos

Este directorio no existe por defecto, pero se creará mediante los comandos Artisan event:generate y make:event. El directorio Events alberga clases de eventos. Los eventos se pueden usar para alertar a otras partes de tu aplicación que se ha producido una acción específica, brindando mucha flexibilidad y desacoplamiento.

El Directorio de Excepciones

El directorio Exceptions contiene el manejador de excepciones de tu aplicación y también es un buen lugar para colocar cualquier excepción lanzada por tu aplicación. Si deseas personalizar cómo se registran o representan tus excepciones, debes modificar la clase Handler en este directorio.

El Directorio Http

El directorio Http contiene tus controladores, middleware y solicitudes de formularios. 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á si ejecutas el comando Artisan make:job. El directorio Jobs alberga los trabajos en cola para tu aplicación. Los trabajos se pueden encolar desde tu aplicación o ejecutarse de manera síncrona dentro del ciclo de vida de la solicitud actual. Los trabajos que se ejecutan síncronamente durante la solicitud actual a veces se denominan "comandos", ya que son una implementación del patrón de comando.

El Directorio de Escuchadores

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

El Directorio de Correo

Este directorio no existe por defecto, pero se creará 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 de correo electrónico te permiten encapsular toda la lógica de construcción de un correo electrónico en una sola clase simple que se puede enviar mediante 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 Active Record 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 realizar consultas en tus tablas, así como insertar nuevos registros en la tabla.

El Directorio de Notificaciones

Este directorio no existe por defecto, pero se creará 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 notificación de Laravel abstrae el envío de notificaciones a través de una variedad de controladores como correo electrónico, Slack, SMS o almacenamiento en una base de datos.

El Directorio de Políticas

Este directorio no existe por defecto, pero se creará si ejecutas el comando Artisan make:policy. El directorio Policies contiene las clases de políticas de autorización para tu aplicación. Las políticas se utilizan para determinar si un usuario puede realizar una acción específica 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 al vincular servicios en el contenedor de servicios, registrar eventos o realizar cualquier otra tarea para preparar tu aplicación para las solicitudes entrantes.

En una aplicación Laravel nueva, este directorio ya contendrá varios proveedores. Eres libre de agregar tus propios proveedores a este directorio según sea necesario.

El Directorio de Reglas

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