Introducción
La estructura por defecto de una aplicación Laravel ofrece un buen punto de partida tanto para aplicaciones grandes como pequeñas. Sin embargo, eres libre de organizar tu aplicación como quieras. Laravel apenas impone restricciones sobre dónde ubicar las clases, siempre que Composer pueda cargarlas automáticamente.Directorio raíz
Al crear un proyecto Laravel nuevo se genera una estructura como la siguiente.Directorio app/
Contiene el código principal de la aplicación.
Casi todas las clases (controladores, modelos, middlewares, etc.) se colocan aquí.
Por defecto incluye los subdirectorios Http, Models y Providers.
Al generar clases con comandos Artisan, también se crean automáticamente otros subdirectorios.
Directorio bootstrap/
Contiene el archivo app.php que arranca el framework.
También contiene el subdirectorio cache/, que guarda archivos de optimización de rendimiento como la caché de rutas o la de servicios.
Directorio config/
Almacena todos los archivos de configuración de la aplicación.
Es recomendable leer estos archivos para conocer las opciones disponibles.
Directorio database/
Almacena las migraciones, las model factories y los seeders de la base de datos.
También puedes ubicar aquí el archivo de base de datos SQLite.
Directorio public/
Contiene index.php, el punto de entrada de todas las solicitudes a la aplicación.
Aquí también se almacenan los assets como imágenes, JavaScript o CSS.
Directorio resources/
Contiene las vistas y los assets sin compilar (CSS, JavaScript, etc.).
Directorio routes/
Contiene todas las definiciones de rutas de la aplicación.
Por defecto se incluyen dos archivos de rutas: web.php y console.php.
| Archivo | Uso |
|---|---|
web.php | Rutas dirigidas al navegador. Se les aplica el grupo de middleware web, que aporta sesión, protección CSRF y cifrado de cookies. |
console.php | Archivo para definir comandos Artisan mediante closures. |
api.php | Rutas de API sin estado. Se añade con el comando install:api. |
channels.php | Archivo para registrar los canales de broadcasting de eventos. |
Directorio storage/
Almacena archivos generados por el framework: logs, plantillas Blade compiladas, sesiones basadas en archivos, caché de archivos, etc.
Se divide en tres subdirectorios: app/, framework/ y logs/.
Directorio tests/
Contiene las pruebas automatizadas.
Incluye ejemplos de pruebas unitarias y de funcionalidad usando Pest o PHPUnit.
Directorio vendor/
Contiene las dependencias de Composer. No lo confirmes en el control de versiones.
Detalles del directorio app/
Muchas clases del directorio app pueden generarse con comandos Artisan.
Para ver los comandos disponibles ejecuta:
Directorio Http/
Directorio Http/
Contiene controladores, middlewares y form requests.
Casi toda la lógica de procesamiento de las solicitudes se ubica aquí.
Directorio Models/
Directorio Models/
Contiene todas las clases de modelos Eloquent.
Existe un “modelo” por cada tabla de la base de datos, que se utiliza para consultar e insertar datos.
Directorio Providers/
Directorio Providers/
Contiene todos los service providers de la aplicación.
Los service providers registran servicios en el contenedor, registran eventos y realizan las tareas necesarias para arrancar la aplicación.
Directorio Console/
Directorio Console/
Contiene todos los comandos Artisan personalizados.
Se generan con el comando
make:command.Directorio Exceptions/
Directorio Exceptions/
Contiene todas las excepciones personalizadas de la aplicación.
Se generan con el comando
make:exception.Archivos importantes
Archivo .env
Gestiona los valores de configuración que varían por entorno (credenciales de base de datos, claves de API, etc.).
Se accede a ellos a través del helper env() desde los archivos de configuración de config/.
Archivo artisan
Es el punto de entrada de la interfaz de línea de comandos Artisan.
Se ejecuta con el formato php artisan <nombre_del_comando>.
Próximos pasos
Enrutamiento
Aprende a definir rutas y a asociar URLs con la lógica de la aplicación.