Estructura de carpetas de Laravel 5

  • Por
  • PHP
Un resumen de la estructura de carpetas del framework Laravel 5, a vista de pájaro, sin entrar en demasiado detalle, pero que nos ayude a ubicar los componentes principales.

Laravel, así como cualquier framework PHP, propone una estructura de carpetas, con la que organizar el código de los sitios o aplicaciones web. Como ya somos desarrolladores aplicados ;) deberíamos saber que cuando más separemos el código por responsabilidades, más facilidad de mantenimiento tendrán nuestras aplicaciones. Por lo tanto, en el desarrollo del framework se cuidan mucho estos detalles, para que aquellos desarrolladores que lo utilicen sean capaces también de organizarse de una manera correcta.

En este artículo del Manual de Laravel pretendemos dar un rápido recorrido a las carpetas que vas a encontrar en la instalación de partida de Laravel 5, teniendo en cuenta que en futuras ocasiones quedará pendiente un análisis en profundidad de cada uno de estos elementos.

El objetivo de este artículo es que sepamos más o menos dónde están las cosas en el framework y que tengamos una ligerísima idea de lo que es cada cosa.

Archivos en la carpeta raíz

Los archivos que tenemos sueltos en la carpeta raíz de Laravel son los siguientes (o al menos los más importantes que debes ir conociendo).

.env
Es la definición de las variables de entorno. Podemos tener varios entornos donde vamos a mantener la ejecución de la aplicación con varias variables que tengan valores diferentes. Temas como si estamos trabajando con el debug activado, datos de conexión con la base de datos, servidores de envío de correo, caché, etc.

Nota: Si .env no se ha generado en tu sistema lo puedes generar a mano mediante el archivo .env.example, renombrando ese fichero o duplicándo y renombrando después. Esto se explicó anteriormente en el artículo llamado Tareas para completar la instalación y problemas comunes.

composer.json
Que contiene información para Composer. Para conocer algo más de este fichero es mejor que te leas el Tutorial de Composer.

Además en la raíz hay una serie de archivos que tienen que ver con Git, el readme, o del lado frontend el package.json o incluso un gulpfile.js que no vendria muy al caso comentar aquí porque no son cosas específicas de Laravel.

Carpeta vendor

Esta carpeta contiene una cantidad de librerías externas, creadas por diversos desarrolladores que son dependencias de Laravel. La carpeta vendor no la debemos tocar para nada, porque la gestiona Composer, que es nuestro gestor de dependencias.

Si nosotros tuviésemos que usar una librería que no estuviera en la carpeta vendor la tendríamos que especificar en el archivo composer.json en el campo require. Luego hacer un "composer update" para que la nueva dependencia se instale.

Carpeta storage

Es el sistema de almacenamiento automático del framework, donde se guardan cosas como la caché, las sesiones o las vistas, logs, etc. Esta carpeta tampoco la vamos a tocar directamente, salvo que tengamos que vaciarla para que todos esos archivos se tengan que generar de nuevo.

También podemos configurar Laravel para que use otros sistemas de almacenamiento para elementos como la caché o las sesiones.

En cuanto a las vistas cabe aclarar que no son las vistas que vamos a programar nosotros, sino las vistas una vez compiladas, algo que genera Laravel automáticamente en función de nuestras vistas que meteremos en otro lugar.

Carpeta resources

En Laravel 5 han creado esta carpeta, englobando distintos tipos de recursos, que antes estaban dentro de la carpeta app. En resumen, en esta carpeta se guardan assets, archivos de idioma (lang) y vistas.

Dentro de views tienes las vistas que crearás tú para el desarrollo de tu aplicación. En la instalación básica encontrarás una serie de subcarpetas con diversos tipos de vistas que durante el desarrollo podrias crear, vistas de emails, errores, de autenticación. Nosotros podremos crear nuevas subcarpetas para organizar nuestras vistas.

A propósito, en Laravel se usa el motor de plantillas Blade. Lo estudiaremos más adelante.

Carpeta Public

Es el denominado "document root" del servidor web. Es el único subdirectorio que estará accesible desde fuera mediante el servidor web. Dentro encontrarás ya varios archivos:

.htaccess
En el caso de Apache, este es el archivo que genera las URL amigables a buscadores.

favicon.ico
Es el icono de nuestra aplicación, que usará el navegador para el título de la página o al agregar la página a favoritos.

index.php
Este es un archivo muy importante, que hace de embudo por el cual pasan todas las solicitudes a archivos dentro del dominio donde se está usando Laravel. Estaría bien que abrieras ese index.php para observar lo que tiene dentro. Para el que conozca el patrón "controlador frontal" o "front controller" cabe decir que este index.php forma parte de él.

robots.txt
Que es algo que indica las cosas que puede y no puede hacer a la araña de Google y la de otros motores de búsqueda.

En la carpeta public podrás crear todas las subcarpetas que necesites en tu sitio web para contener archivos con código Javascript, CSS, imágenes, etc.

Carpeta database

Contiene las alimentaciones y migraciones de la base de datos que veremos más adelante.

Carpeta bootstrap

Permite el sistema de arranque de Laravel, es otra carpeta que en principio no necesitamos tocar.

Carpeta config

Esta carpeta contiene toda una serie de archivos de configuración. La configuración de los componentes del framework se hace por separado, por lo que encontraremos muchos archivos PHP con configuraciones específicas de varios elementos que seguramente reconoceremos fácilmente.

La configuración principal está en app.php y luego hay archivos aparte para configurar la base de datos, las sesiones, vistas, caché, mail, etc.

Carpeta app

Es la última que nos queda y es la más importante. Tiene a su vez muchas carpetas adicionales para diversas cosas. Encuentras carpetas para comandos, para comandos de consola, control de eventos, control de excepciones, proveedores y servicios, etc.

Es relevante comentar que en esta carpeta no existe un subdirectorio específico para los modelos, sino que se colocan directamente colgando de app, como archivos sueltos.

La carpeta Http que cuelga de App contiene a su vez diversas carpetas importantes, como es el caso de aquella donde guardamos los controladores, middleware, así como el archivo de rutas de la aplicación routes.php que vimos anteriormente, entre otras cosas.

Conclusión

Hemos podido conocer de una manera breve los componentes principales del framework Laravel. Como todo en la vida, visto así rápidamente, nos puede parecer que son muchas cosas y difíciles de entender y usar, pero no debemos preocuparnos porque los iremos conociendo poco a poco. Si tienes una base razonable de conocimientos de PHP y patrones de diseño orientado a objetos te resultará fácil usarlos leyendo los siguientes artículos del Manual de Laravel.

Autor

Miguel Angel Alvarez

Miguel es fundador de DesarrolloWeb.com y la plataforma de formación online EscuelaIT. Comenzó en el mundo del desarrollo web en el año 1997, transformando su hobby en su trabajo.

Compartir

Comentarios

Santiago S

09/7/2015
muy útil
Seguimos aprendiendo Laravel, ya veremos donde nos lleva esto, de momento muy bien, todo súper bien explicado.
Gracias

zmed-nic

27/10/2015
Muy Bien Explicado
El articulo se nota que esta escrito por un programador experimentado,si nota la calidad y lo fácil
que es entenderlo y llegar a ponerlo en la practica!



Muchas Gracias Miguel :)

marco ambrosio

02/4/2016
EXCELENTE
Recien estoy aprendiendo y cada vez me va gustando Laravel... principalmente por la sencillez de este articulo.!!!

Sr.K

28/4/2017
dependencias
Alguien me podría explicar que son dependencias?