Actualización: La nueva versión de Laravel, será la 5 en vez de 4.3, como había sido nombrada originalmente, e incluirá más cambios de los previstos acá, desde aquí los cubriremos todos, no se preocupen, y muchísimas gracias por compartir el artículo!

En este artículo les voy a explicar los 6 cambios más importantes en la nueva versión de Laravel con respecto a la versión actual (4.2). Tienen que tener muy en cuenta que Laravel 5 está aún en desarrollo, por lo cual pueden haber cambios significativos antes de su lanzamiento en Noviembre. Pero aquí vamos:

1. Estructura de carpetas

Carpetas en Laravel 4.3

Nueva estructura de carpetas en Laravel 5

Lo primero que notamos si instalamos esta nueva versión del framework, es el cambio en la estructura de archivos, aquí menciono los más importantes:

    • Los controladores ahora se ubican en app/Http/Controllers/ en vez de app/controllers/.
    • Las vistas ahora se ubican en /resources/views/ en vez de /app/views/
    • Dentro de /resources/ también encontrarán los paquetes de idiomas que antes estaban en /app/lang
    • La carpeta /app/models/ fue eliminada, ahora puedes organizar tus modelos de Eloquent dentro de /app/ en la forma que tenga más sentido para tu aplicación.
    • El directorio /app/start/ es reemplazado por /app/providers/ dando un enfoque más orientado a objetos a la configuración de la aplicación
    • Otras carpetas como config y database (que aloja las migraciones y los seeders) ahora están en el directorio principal en vez de /app/
    • Ahora los comandos personalizados que crees estarán dentro de /app/Console/ en vez de /app/commands/

2. Uso de Namespaces y PSR-4

Los controladores, modelos y demás clases de tu aplicación estarán en el directorio /app/ y usarán al menos un namespace principal (espacio de nombre). Por defecto el namespace principal es App pero podrás cambiarlo con un simple comando:

php artisan app:name Cms

Recomendación: Utiliza el nombre de tu aplicación como namespace, por ejemplo «Facebook», «Twitter», «Acme».

Composer cargará automáticamente todas las clases de tu aplicación sin que sea necesario usar composer dump-autoload cada vez que crees una clase. Gracias a que Laravel ahora viene con el estandar PSR-4 configurado por defecto:

"autoload": {
	"psr-4": {
		"Cms\\": "app/"
	}
}

Básicamente, PSR-4 es un estándar para organizar tus clases en directorios y archivos, si tienes una clase \Cms\User  debe estar en la siguiente ubicación: app/Cms/User.php, la clase
Http\Controllers\HomeController va a estar en app/Http/Controllers/HomeController.php, etc.

3. Inyección de dependencias en rutas y controladores

La inyección de dependencias de Laravel que hasta ahora funcionaba sólo en los métodos constructores (__construct), ahora también funciona en los métodos de los controladores y en las rutas.

Inyección de dependencias

Inyección de dependencias en un método

Esto funciona automáticamente, lo que quiere decir que no tienes que preocuparte en pasar las clases al método. En Laravel 5, espero que los programadores usemos menos Facades y más inyección de dependencias (más sobre esto en próximos posts).

4. Form Requests

Este es probablemente el feature más destacado en Laravel 5 que hará la validación no solamente fácil sino automática:

form request

Form Request en Laravel 5

Sólo necesitamos 3 pasos:

  • Generar un nuevo FormRequest con el comando make:request
  • Agregar las reglas de validación que querramos dentro del método rules (ver imagen a la izquierda).
  • Luego dentro de un método en el controlador referenciamos el FormRequest (imagen a la derecha).

¡Listo! Si el usuario envía uno o más campos no válidos, Laravel  enviará los errores con JSON o redireccionará de vuelta (dependiendo si la petición es AJAX o no) SIN llegar a ejecutar el código dentro del controlador, si la validación pasa, entonces el código del método (en nuestro ejemplo User::create(…) sí será ejecutado).

form request response

Response del Form Request por defecto

Básicamente toda la lógica de un formulario estará dentro de estas clases FormRequest. Lo mejor es que es totalmente personalizable para casos excepcionales donde necesitemos otro tipo de respuesta, etc.

De esta manera los controladores quedan mucho más limpios que antes.

5. Generadores

Dado que Laravel 5 exige un uso mucho más intensivo de clases, namespaces, etc. Esta versión del framework viene con nuevos generadores, para facilitar la tarea y ahorrar tiempo, incluyendo generadores para los nuevos «Form Request», etc.

Laravel 4.3 Generators

Nuevos generadores en Laravel 5

6. Caché para Rutas

No he probado esto en detalle, pero ahora se incluye un nuevo caché de rutas que promete que las rutas se ejecuten hasta 50 veces más rápido. Para usar el caché sólo necesitas ejecutar el comando:

php artisan route:cache

¿Cuándo sale la nueva versión de Laravel?

El lanzamiento está pautado para Noviembre de este año.

¿Cómo puedo instalar Laravel 5?

Ejecuta esto en la consola:

composer create-project laravel/laravel ESCRIBE_TU_DIRECTORIO_AQUI dev-develop

¿Les interesa aprender más sobre esta actualización?

No dejen de estar pendientes del blog y de seguirme en Twitter, pronto haré una serie en video dedicada a cubrir los cambios de esta actualización.

Saludos a todos.

Regístrate hoy en Styde y obtén acceso a todo nuestro contenido.