Estructura de carpetas y archivos en Laravel
Un proyecto en Laravel, puede ser muy cambiante; según la configuración que realices, así como los paquetes que instales puedes tener más carpetas y archivos; a partir de la versión 11 de Laravel, tenemos algunos cambios importantes que debemos de tener en cuenta; veamos las carpetas y archivos principales de un proyecto en Laravel:
La carpeta app
La carpeta app contiene el código central de la aplicación. Esta es la carpeta central del proyecto en donde pasaremos la mayor parte del tiempo; en este archivo están casi todas las clases de la aplicación.
La carpeta bootstrap
La carpeta de Bootstrap contiene el archivo app.php que arranca el framework; el primer archivo que se ejecuta es el public/index.php que finalmente carga el mencionado archivo app.js. Esta carpeta también alberga una carpeta de caché 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 es necesario hacer cambios aquí.
La carpeta de config
La carpeta de config, como su nombre lo indica, contiene todos los archivos de configuración de su aplicación; base de datos, cors, jetstream, app y muchas más.
La carpeta database
La carpeta de database contiene las migraciones de la base de datos, y los seeders. Si lo desea, también puede usar esta carpeta para almacenar una base de datos SQLite.
La carpeta lang
La carpeta lang alberga todos los archivos de idiomas; por defecto, no viene incluida en Laravel 11; puedes publicarla la carpeta en caso de que requieras usar múltiples lenguajes en tu aplicación con:
$ php artisan lang:publish
La carpeta public
La carpeta public contiene el archivo index.php, que es el punto de entrada para todas las solicitudes que ingresan a su aplicación y configura la carga automática. Esta carpeta también alberga archivos que pueden ser manejados por el navegador como imágenes, JavaScript y CSS.
La carpeta de resources
La carpeta de resources contiene sus vistas, así como sus activos sin compilar, como CSS o JavaScript.
La carpeta de routes
La carpeta de routes contiene todas las definiciones de ruta para su aplicación. De forma predeterminada, se incluyen varios archivos de ruta con Laravel: web.php, console.php:
- El archivo web.php contiene rutas que son empleadas para manejar la aplicación web; es decir, la que se consume mediante el navegador; estas rutas están configuradas para proporcionar estado de sesión, protección CSRF y cifrado de cookies.
- El archivo channels.php es donde puedes registrar todos los canales de transmisión de eventos que admite tu aplicación.
A partir de Laravel 11, para publicar los siguientes archivos que fueron marcados como opcionales:
- El archivo api.php contiene las rutas para la creación de una Api Rest; estas rutas están diseñadas para no tener estado, por lo que las solicitudes que ingresan a la aplicación a través de estas rutas deben autenticarse mediante tokens y no tendrán acceso al estado de la sesión.
- El archivo console.php es donde puede definir todos sus comandos de consola basados en artisan mediante comandos.
Debemos de ejecutar los comandos de artisan:
Debemos de ejecutar los comandos de artisan:
$ php artisan install:api
Y
$ php artisan install:broadcasting
Respectivamente.
Al generar las rutas para la API, hará que se instale Laravel Sanctum, del cual hablaremos en otro capítulo:
./composer.json has been updated
Running composer update laravel/sanctum
Loading composer repositories with package information
Updating dependencies
Lock file operations: 1 install, 0 updates, 0 removals
- Locking laravel/sanctum (v4.X)
Writing lock file
Installing dependencies from lock file (including require-dev)
Package operations: 1 install, 0 updates, 0 removals
- Downloading laravel/sanctum (v4.X)
- Installing laravel/sanctum (v4.X): Extracting archive
La carpeta storage
La carpeta storage contiene sus registros, plantillas Blade compiladas, sesiones basadas en archivos, cachés de archivos y otros archivos generados por el framework; esta carpeta se puede usar para almacenar cualquier archivo generado por su aplicación.
La carpeta de tests
La carpeta de test contiene sus pruebas automatizadas; es decir, las pruebas unitarias de PHPUnit.
La carpeta de vendor
La carpeta de vendor contiene sus dependencias de Composer.
La carpeta de app
La mayor parte de la aplicación se encuentra en la carpeta de app, que como mencionamos antes, es donde pasaremos la mayor parte de nuestro tiempo; la mayoría de las clases se encuentran en esta carpeta y podemos definir archivos con configuraciones para distintos propósitos.
En esta carpeta, se ubican otras carpetas; vamos a explicar las principales:
La carpeta Http
La carpeta Http contiene sus controladores, middleware y solicitudes de formulario.
La carpeta de Models
La carpeta de models contiene todas las clases de modelos de Eloquent. Cada tabla de la base de datos tiene un "Modelo" correspondiente que se utiliza para interactuar con esa tabla. Los modelos le permiten consultar datos en sus tablas, así como insertar, actualizar y eliminar registros en la tabla.
- Andrés Cruz
Este material forma parte de mi curso y libro completo; puedes adquirirlos desde el apartado de libros y/o cursos Curso y Libro Laravel 11 con Tailwind Vue 3, introducción a Jetstream Livewire e Inerta desde cero - 2024.
Desarrollo con Laravel, Django, Flask, CodeIgniter, HTML5, CSS3, MySQL, JavaScript, Vue, Android, iOS, Flutter