Una de las cosas que más chocan cuando se empieza a estudiar Laravel es su estructura de directorios y archivos, hasta el punto de hacer que muchas veces nos echemos hacia atrás, de hecho a mi me ha pasado varias veces…
Por eso en esta entrada vamos a ver la estructura de directorios, definiendo para que sirve cada uno y ya cuando vayamos entrando en materia iremos tocando cada uno de sus archivos…
Vamos a ello
- app: Nucleo de la app
- Console: comandos personalizados de la app utilizando make:command, aquí se encuentra también el kernel de la consola
- Events: Este directorio no existe de forma automática pero se puede crear usando event:generate, e informa a otras partes de la app cuando suceden ciertos eventos
- Exceptions: contiene el gestor de excepciones para personalizar el modo en el que se almacenan o muestran.
- Http: Contiene los controladores (parte muy importante de nuestra aplicación como iremos viendo), middleware y form request de nuestra aplicación. En general toda la lógica.
- Jobs: no existe por defecto, se puede crear usando make:job, y crea acciones de forma sincrona
- Listeners: no existe por defecto, se puede crear usando make:listener, y recibe las instancias
- Mails: no existe por defecto, se puede crear usando make:mail, permite encapsular toda la lógica para enviar correos y se pueden enviar usando mail:send
- Notifications: no existe por defecto, se puede crear usando make:notification, contiene las notificaciones que son enviadas tipo; slack, mails, sms…
- Policies: no existe por defecto, en el se introducen las políticas de autorización
- Providers: son las clases que permiten construir o crear instancia de otros objetos
- bootstrap: contiene el framework de bootstrap y el directorio de caché donde se guarda la caché de la app
- config: tiene todos los archivos de configuración, menos el .env (que veremos en la próxima entrada)
- database: contiene las migraciones de la BBDD, seeds y factorias.
- public: aquí es donde se encuentra el archivo index.php que arranca nuestra app, así como los recursos css, js, imagenes, fuentes…
- resources: contiene las vistas, archivos, LESS, SASS, JS sin comprimir y archivos de idioma
- routes: contiene las rutas de la app, que distribuyen el flujo de navegación del usuario
- storage: contiene las plantillas blade compiladas, sesiones, cachés, logs…
Tanto storage, app y public pueden usarse para guardar archivos de usuario como fotos de perfil.
Se debería de crear un enlace simbólico en public/storage que apunte a esta carpeta utilizando: php artisan storage:link
- tests: contiene las pruebas automatizadas de la app
- vendor: contiene las dependencias de laravel
Con este indice nos será suficiente como para ir conociendo la estructura de laravel y comenzar a trabajar, con esto ya solo quedaría configurar nuestro entorno y ponernos a trabajar.
