Estructura de directorios en proyectos laravel

2019-07-04 Laravel
Tags   Laravel 5.8 Laravel 6x

Una de los aspectos más engorrosos de asimilar al iniciar con laravel es su estructura de directorios. Personalmente, cuando me inicié en laravel pensaba que la estructura de directorios podría ser algo exagerada, sin embargo, solo bastó con algunas semanas trabajando de lleno en el framework para entender que realmente el scaffolding de laravel está pensado tanto para proyectos grandes como pequeños. Muchos de los directorios son realmente necesarios en todo tipo de proyectos, la siguiente tabla muestra una descripción resumida de cada uno de ellos.

Directory Meaning
/app Contiene la lógica de la aplicación. En particular contienen los controladores y los modelos.
/bootstrap Contiene el archivo app.php que inicia la aplicación.
/config Contiene todos los archivos de configuración.
/database Contiene las migraciones de base de datos, factorias de modelos y seeders.
/public Contienen el archivo index.php el cuál es el punto de entrada para todas las peticiones. También contienen los assets como archivos CSS, JS, y demás.
/resources Contienen las vistas en plano, los assets descompiladados (LESS, SASS, ...) y los archivos de traducción a otros idiomas.
/routes Contiene la configuración de rutas de la aplicación (web.php, api.php, console.php, channels.php).
/storage Contiene los archivos blade compilados, archivos de sessión y otros generados por el framework.
/storage/app Este directorio puede ser utilizado para guardar archivos generados por la aplicación.
/storage/app/public Este directorio puede ser usado para guardar archivos generados por los usuarios de la aplicación y deberían ser de acceso público.
/storage/framework Contiene los archivos de cache generados por el framework.
/storage/logs Contiene los archivos de log de la aplicación.
/tests Contiene las pruebas automatizadas de la aplicación.

Lo más importante de esto, es tener en cuenta que no hay que memorizarse completamente esta estrucutura de directorios por lo menos en un comienzo. A medida utilicemos el framework para una o utra aplicación será muy sencillo familiarizarse poco a poco con esta estructura.

Si observas con detenimiento, algunos directorios pueden plantear retos no previstos en el aprendizaje de laravel, para mí uno de estos retos fue aprender a utilizar procesadores de estilos como LESS o SASS, y entornos de ejecución de javascript como Node.Js. Estos archivos están alojados en el directorio resources y son compilados para generar un único archivo CSS o JAVSCRIPT con todas las dependencias necesarias para la ejecución de nuestro proyecto. Esto por una parte, reduce las llamadas al servidor cuando tenemos una cantidad de archivos javascript y CSS considerable, por otro lado, ayuda a manejar dependencias en lenguajes cliente. Otro reto podría ser aprender sobre generación de archivos de log con el estándar PSR-3.

El objetivo final de este post, es ilustrar de manera sencilla la estrucutra de directorios de un proyecto laravel e incentivar al desarrollador a que revise cada uno de estos directorios. Cuando se inicia en laravel sirve de mucho entrar por ejemplo a la carpeta /config y revisar cada uno de los archivos para detectar cómo está configurada la aplicación. Espero que os haya despejado algunas dudas con este post y que haya despertado al menos curiosidad con los nuevos conceptos que podrías aprender, hasta la próxima!.

Acerca de Darío Rivera

Author

Ingeniero de desarrollo en PlacetoPay , Medellín. Darío ha trabajado por más de 6 años en lenguajes de programación web especialmente en PHP. Creador del microframework DronePHP basado en Zend y Laravel.

Sólo aquellos que han alcanzado el éxito saben que siempre estuvo a un paso del momento en que pensaron renunciar.