Uno de los cambios principales y motivo para que Laravel 4.3 se haya convertido en Laravel 5.0 es la nueva estructura de directorios.
Laravel 5 también implementa el estándar de autocarga de clases PSR-4, lo que significa que todas las clases están ahora bajo un espacio de nombres obligatoriamente.
Por defecto, Laravel utiliza un espacio de nombres llamado App
por lo que, por ejemplo, debemos incluir namespace App\Http\Controllers;
dentro de nuestros controladores. Para asignar un nuevo nombre a nuestra aplicación basta con utilizar el comando php artisan app:name AppName
. Esto actualizará el fichero composer.json
a la vez que nuestras sentencias namespace
dentro de nuestros controladores, middleware, etc.
Así pues la estructura de directorios queda de la siguiente manera:
app
Commands
Console
Events
Exceptions
Handlers
Commands
Events
Http
Controllers
Middleware
Requests
Providers
Services
bootstrap
config
database
migrations
seeds
public
package
resources
lang
views
storage
cache
logs
meta
sessions
views
work
tests
Nuevos directorios
A continuación una breve descripción de los nuevos directorios que encontramos dentro de app
en esta versión.
Commands
El directorio commands
(que pronto se llamará jobs
), se encarga de almacenar los comandos de nuestra aplicación. Esto vienen a ser las tareas programadas y los trabajos en cola.
Console
El directorio console
contiene los comandos de Artisan que hayamos creado, lo que antiguamente era el directorio commands
.
Events
Como habrás adivinado, el directorio events
almacena los eventos de la aplicación.
Exceptions
A partir de ahora las excepciones serán controladas desde clases almacenadas en este directorio.
Handlers
En este directorio se almacenan las clases que se encargan de realizar acciones en respuesta a comandos y eventos.
Http
Una gran idea la de Http
. Ahora todo lo relacionado con las peticiones se guarda aquí: routes.php
, controladores, middleware (antiguos filtros) y objetos request.
Providers
Aquí se guardan los proveedores de servicios. Si has utilizado paquetes externos en Laravel, a partir de ahora serán referenciados desde aquí. Puedes leer más sobre esto en la documentación oficial.
Services
Directorio para almacenar servicios que son necesarios para el funcionamiento de nuestra aplicación. Por ejemplo servicios que interactúan con APIs externas, sistemas de estadísticas, etc.
Otros cambios con respecto a Laravel 4
Reestructuración de directorios
Los directorios config
, database
y storage
dejan de estar dentro de app
y pasan a la raíz del proyecto por temas de organización.
El nuevo directorio resources
que se encuentra en la raíz del proyecto, contiene los directorios lang
y views
que residían dentro de app
en Laravel 4. También contiene los ficheros precompilados de lenguajes como LESS, SCSS, CoffeeScript, etc.
Modelos
El antiguo directorio models
ya no existe y nuestros modelos (User.php
, Post.php
...) residirán ahora dentro del directorio app
.
Filtros
Antiguamente los filtros se encontraban apelotonados en filters.php
. Ahora los filtros se llaman middleware y se pueden gestionar de una manera mucho más eficiente y organizada dentro de Http/Middleware
.