Estructura de laravel

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.