Novedades en Laravel 5: Estructura de directorios

  • #laravel
  • #php

La estructura de directorios sufre un cambio en Laravel 5. Más organización y limpieza que ayudarán a gestionar mejor cualquier proyecto.

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.

Compartir en