Directory Structure
Directory Structure
Directorio App
El directorio app contiene el código de tu aplicación. Casi todas las clases de tu aplicación estarán en este directorio.
La mayoría de tu aplicación se encuentra en el directorio app. Por defecto, este directorio está bajo el espacio de nombres App y es cargado por Composer utilizando el estándar de autoloading PSR-4.
El directorio app contiene una variedad de subdirectorios adicionales, como Console, Http y Providers. Piensa en los directorios Console y Http como un API que proporciona acceso al núcleo de tu aplicación. El protocolo HTTP y la CLI son 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 de Artisan, mientras que el directorio Http contiene tus controladores, middleware y solicitudes.
Una variedad de otros directorios se generará dentro del directorio app a medida que utilices los comandos make de Artisan para generar clases. Por ejemplo, el directorio app/Jobs no existirá hasta que ejecutes el comando make de Artisan para generar un job.
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 en tu terminal.
El Directorio 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. Por lo general, no deberías necesitar modificar ningún archivo dentro de este directorio.
El Directorio Config
El directorio config, contiene todos los archivos de configuración de tu aplicación.
El Directorio Database
El directorio database contiene tus migraciones de base de datos, Model Factories y Seeders. Si lo deseas, también puedes utilizar este directorio para almacenar 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 ingresan a tu aplicación y configura el autoloading. Este directorio también alberga tus activos, como imágenes, JavaScript y CSS.
El Directorio Resources
El directorio resources contiene tus vistas, así como tus activos sin compilar, como CSS o JavaScript.
El Directorio Routes
El directorio routes contiene todas las definiciones de rutas para tu aplicación. Por defecto, se incluyen varios archivos de rutas con Laravel: web.php, api.php, console.php y channels.php.
El archivo web.php contiene rutas que el RouteServiceProvider coloca en el grupo de middlewares web, que proporciona estados de 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 están destinadas a ser autenticadas mediante tokens y no tendrán acceso al estado de sesión.
El archivo console.php es donde puedes definir todos tus comandos de consola basados en closures. Cada closure se vincula a una instancia de comando, lo que permite un enfoque simple para interactuar con los métodos de entrada/salida de cada comando. Aunque este archivo no define rutas HTTP, sí 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 tu aplicación admite.
El Directorio Storage
El directorio storage contiene tus registros, plantillas Blade compiladas, sesiones basadas en archivos, cachés basados en archivos y otros archivos generados por el framework. Este directorio se divide en directorios app, framework y logs. El directorio app se puede utilizar 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 puede utilizarse para almacenar archivos generados por los usuarios, como avatares de perfil, que deben ser accesibles públicamente. Debes crear un enlace simbólico en public/storage que apunte a este directorio. Puedes crear el enlace utilizando el comando php artisan storage
El Directorio Tests
El directorio tests contiene tus pruebas automatizadas. Se proporcionan ejemplos de pruebas unitarias y pruebas de PHPUnit de manera predeterminada. Cada clase de prueba debe tener el sufijo Test. Puedes ejecutar tus pruebas utilizando los comandos phpunit o php vendor/bin/phpunit. O, si deseas una representación más detallada y visualmente atractiva de los resultados de tus pruebas, puedes ejecutar tus pruebas utilizando el comando php artisan test.
El Directorio Vendor
El directorio vendor contiene tus dependencias de Composer.
El Directorio Broadcasting
El directorio Broadcasting contiene todas las clases de canales 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á cuando crees tu primer canal. Para aprender más sobre canales, consulta la documentación sobre event broadcasting.
El Directorio Console
El directorio Console contiene todos los comandos Artisan personalizados para tu aplicación. Estos comandos pueden generarse utilizando el comando make:command
El Directorio Events
Este directorio no existe por defecto, pero se creará para ti mediante los comandos: event:generate y make:event de artisan. Los eventos pueden usarse para alertar a otras partes de tu aplicación que se ha producido una acción determinada, proporcionando una gran flexibilidad y desacoplamiento.
El Directorio Exceptions
El directorio Exceptions contiene las excepciones personalizadas de tu aplicación.
Estas excepciones pueden ser generadas usando make:exception
El Directorio Http
El directorio Http contiene tus controladores, middleware y form requests. Casi toda la lógica para manejar las solicitudes que ingresan a tu aplicación se colocará en este directorio.
El Directorio Jobs
Este directorio no existe por defecto, pero se creará para ti si ejecutas el comando make:job de Artisan. El directorio Jobs guarda los trabajos que pueden ser encolados (mandados a una queue) en tu aplicación. Los trabajos pueden ser encolados por tu aplicación o ejecutarse de manera sincrónica dentro del ciclo de vida de la solicitud actual. Los trabajos que se ejecutan de manera sincrónica durante la solicitud actual a veces se denominan “comandos”, ya que son una implementación del command pattern
El Directorio Listeners
Este directorio no existe por defecto, pero se creará para ti si ejecutas el comando event:generate o make:listener . El directorio Listeners contiene las clases que manejan tus eventos. Los oyentes de eventos reciben una instancia del evento y realizan lógica en respuesta a la activación del evento. 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á para ti si ejecutas el comando make:mail de Artisan. El directorio **Mail**contiene todas las clases que representan todos correos electrónicos enviados por tu aplicación. Los objetos Mail te permiten encapsular toda la lógica para construir un correo electrónico en una única y simple clase que puede enviarse utilizando el método Mail::send
El Directorio Models
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 (Models) te permiten consultar datos en tus tablas, así como insertar nuevos registros en la tabla.
El Directorio Notifications
Este directorio no existe por defecto, pero se creará para ti si ejecutas el comando make:notifications de Artisan. El directorio Notifications contiene todas las notificaciones “transaccionales” que son enviadas por tu aplicación, como notificaciones simples sobre eventos que ocurren dentro de tu aplicación. La característica de notificaciones de Laravel abstrae el envío de notificaciones a través de una variedad de drivers, como correo electrónico, Slack, SMS o almacenadas en una base de datos.
El Directorio Policies
Este directorio no existe por defecto, pero se creará para ti si ejecutas el comando make:policy de Artisan. 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 dada sobre un recurso (los modelos).
El Directorio Providers
El directorio Providers contiene todos los proveedores de servicios de tu aplicación. Los proveedores de servicios inicializan tu aplicación al vincular services en el contenedor de servicios, registrar eventos o realizar cualquier otra tarea para preparar tu aplicación para solicitudes entrantes. En una aplicación Laravel nueva, este directorio ya contendrá varios proveedores. Tienes la libertad de agregar tus propios proveedores a este directorio según sea necesario.
El Directorio Rules
Este directorio no existe por defecto, pero se creará para ti si ejecutas el comando make:rule de Artisan. El directorio Rules contiene las reglas de validación personalizadas para tu aplicación. Las reglas se utilizan para encapsular lógica de validación complicada en un simple objeto. Para más información, consulta validation documentation.