Novedades de Laravel 5.5

La espera ha terminado. Laravel 5.5 ha sido lanzado oficialmente durante Laracon EU 2017 y viene cargado de muchas mejoras y nuevas características. Esta es una gran actualización que será LTS (Long Term Support o Soporte a Largo Plazo) es decir que tiene soporte para corrección de errores hasta 2 años a partir de su lanzamiento y correcciones de seguridad de hasta 3 años. Esta versión sustituye a la versión previa LTS que era Laravel 5.1. Veamos lo más relevante en las novedades de Laravel 5.5:

Soporta PHP 7 o superior

Si tus proyectos actuales están en PHP 5.6 deberás actualizar para poder usar Laravel 5.5. Puedes conocer algunas características de PHP 7 en PHP 7 oficialmente disponible y prepararte para hacer el cambio.

Whoops está de regreso

Estuvo en el framework hasta la versión 4.2 pero nuevamente fue incluido como el manejador de errores por defecto. Es decir, que cambia la forma de presentarse los errores cuando ocurren proporcionando mucha más información y con un conjunto de funcionalidades que lo harán convertirse en tu aliado en el desarrollo de aplicaciones.

En Styde.net ya estamos dedicando un curso de Novedades de Laravel 5.5. Puedes ver la lección relacionada en: Instalación de Laravel 5.5 y el regreso del componente Whoops

Frontend Presets

Laravel 5.5 viene por defecto con Vue.js, sin embargo, trae la novedad que podemos cambiar la configuración inicial, a través del comando preset, para usar React o ninguno framework, dándonos la flexibilidad de escoger y definir el frontend de aplicación.

Puedes ver detalles en la lección: Frontend presets en Laravel 5.5

Nuevos helpers de rutas

Han sido añadidos dos nuevos métodos Route::view y Route::redirect que nos proveen una forma más rápida para crear una ruta a una vista y para redireccionar de una ruta a otra, respectivamente, sin la necesidad de crear un controlador o trabajar con Closure en una ruta.

Mira la lección para conocer los detalles: Nuevos helpers de rutas en Laravel 5.5

Render Mailables

Con Laravel 5.5 podrás ver una vista preliminar del diseño de un email en el navegador directamente desde una ruta sin la necesidad de usar servicios o paquetes de terceros.

Conoce cómo con nuestra lección: Render Mailables en Laravel 5.5

Nuevo comando Artisan migrate:fresh

Como alternativa a migrate:refresh que a diferencia de éste, ya no ejecuta el método down de cada migración, sino que simplemente elimina todas las tablas de la base de datos y vuelve a ejecutar las migraciones.

Mira nuestra lección sobre este nuevo comando en: Nuevo comando migrate:fresh en Laravel 5.5

Nuevo comando Artisan make:factory

Para crear factories de los modelos de nuestra aplicación de una manera rápida y sencilla. También se incluye una actualización de make:model para que se pueda crear su factory al mismo tiempo.

Ve detalles del uso de este comando en: Nuevo comando make:factory en Laravel 5.5

Nuevo trait RefreshDatabase para las pruebas

Cuando trabajas con base de datos en las pruebas necesitas definir cómo se manejarán las migraciones. Hasta Laravel 5.4 teníamos 2 opciones DatabaseTransactions o DatabaseMigrations pero en Laravel 5.5 tenemos un nuevo trait que incluye lo mejor de las dos formas anteriores.

Puedes conocer su funcionamiento con la lección: Flujo de desarrollo con PHPUnit y base de datos en Laravel 5.5 (RefreshDatabase)

Nueva manera para validar peticiones y obtener datos

En Laravel 5.5 el objeto Request tiene disponible un nuevo método validate con el cual podemos validar las peticiones que vienen de formularios o APIs desde un Closure en una ruta o en el controlador de una manera más sencilla.

Puedes ver cómo trabajar con este método en nuestra lección: Nueva forma de validar peticiones y obtener datos en Laravel 5.5

Nuevo comando Artisan make:rule

Laravel 5.5 nos trae una manera muy sencilla de crear nuestros reglas de validación personalizadas con el comando make:rule. Éste crea una clase en el directorio app/Rules que contiene dos métodos uno para agregar las condiciones que debe cumplir y otro para los mensajes en caso de fallar la regla y listo. Con eso ya podemos agregar nuestra regla al controlador o form request.

Puedes aprender más en la lección: Reglas de validación personalizadas con el nuevo comando make:rule en Laravel 5.5

Detección automática de paquetes

El proceso común para instalar un paquete de tercero para Laravel en un proyecto es: instalar vía Composer y posteriormente registrar el Service Provider que agrega las clases y componentes al Container de la aplicación y opcionalmente, también se registra los alias presentes en el paquete.

Pues ahora Laravel 5.5 proporciona una nueva manera para que los desarrolladores de paquetes indiquen en su archivo composer.json tanto el registro del Service Provider como los Alias y así la aplicación automáticamente los detecta y se encarga de registrarlos en el archivo config/app.php, ahorrándonos el trabajo de hacerlo manualmente.

Registro automáticos de comandos de consola personalizados

Ahora cuando creas tus comandos en Laravel 5.5 ya no es necesario que los registre manualmente en el archivo app/Console/Kernel.php puesto que desde la clase se llama un nuevo método load el cual se encargará de escanear el directorio dado y los registrará automáticamente.

vendor:publish con prompt

Antes de Laravel 5.5 cuando queríamos publicar algunos recursos del framework o paquetes de terceros en nuestra aplicación debíamos especificar cuál usando las opciones --provider o --tags o simplemente publicarlos todos, ejecutando vendor:publish sin ninguna opción. Pero ahora, podemos elegir por un menú en consola cuáles queremos aplicar.

Mejoras en Blade

Para Laravel 5.5 han sido añadidas nuevas directivas @switch, @case, @break, @default, @endswitch para crear un switch en nuestras vistas como por ejemplo:

@switch($i)
    @case(1)
        <p>Case 1</p>
    @break
    @case(2)
        <p>Case 2</p>
    @break
    @default
        <p>Default</p>
@endswitch

También las directivas que nos permite verificar rápidamente el estado de autenticación de un usuario: @auth, @endauth, @guest y @endguest (disponibles también en Laravel 5.4) por ejemplo:

@auth
    <p>Estás conectado a la aplicación</p>
@endauth

@if(Auth::check())
    <p>Estás conectado a la aplicación</p>
@endif

Método Blade::if

Con este nuevo método podremos crear condicionales personalizados de una forma muy sencilla, tan solo agregando en el método boot de un service provider como AppServiceProvider

public function boot()
{
    Blade::if('env', function ($environment) {
        return app()->environment($environment);
    });
}

y luego lo usamos en las vistas de esta manera:

@env('local')
    // En entorno local...
@else
    // No entorno local como producción o testing...
@endenv

Notificaciones bajo demanda

En ocasiones que necesitemos enviar notificaciones a alguien que no se encuentre registrado como usuario en la aplicación podremos usando el método Notification::route de la siguiente manera:

Notification::route('mail', '[email protected]')
    ->send(new CatalogoProductos($catalogo));

Mejoras en las excepciones personalizadas

Ahora en Laravel 5.5 podrás agregar directamente en tus excepciones el método render lo cual permitirá colocar la lógica de la renderización de la excepción en la misma clase y si también quieres personalizar la forma en cómo se reportará puedes agregar el método report a la clase.

Creación de macros de Carbon

El componente Carbon que nos permite trabajar con las fechas de una manera más amigable y que viene incluido por defecto en Laravel, ahora usa el trait Macroable, por tanto, podremos crear macros de una manera más sencilla como por ejemplo:

Carbon::macro('twoDaysAgoAtNoon', function () {
    return Carbon::now()->subDays(2)->setTime(12, 0, 0);
});

y usarlo luego como Carbon::twoDaysAgoAtNoon(). Solo debe estar pendiente de escoger el correcto namespace de la clase Illuminate\Support\Carbon en vez de Carbon\Carbon

Entre muchas otras mejoras y novedades como:

  • Desactivar el sistema de excepciones de Laravel durante las pruebas con el método withoutExceptionHandling.
  • API Resource, una simple manera para transformar modelos y colecciones de modelos a formato JSON.
  • Encadenamiento de trabajos en cola.
  • Integración de proxys de confianza.
  • Consistencia en el manejo de excepciones.
  • Bloqueo para drivers de Cache: Redis y Memcached.
  • Soporte $cast para cuando se insertan o actualizan datos en una tabla pivote.
  • Nuevos método para las colecciones: Collection::dump, Collection::dd, Collection::mapInto, Collection::wrap, Collection::unwrap, entre otros.

Ya en Styde.net comenzamos a publicar lecciones del Curso de Novedades en Laravel 5.5  para que conozcas en detalles todo lo nuevo de esta versión. No dejes de ver las lecciones y compartir el curso en tus redes y con tus colegas.

Además seguiremos trabajando para enseñarte a desarrollar aplicaciones de PHP modernas con esta versión que es LTS con nuevos cursos y tutoriales que te ayudarán a convertirte en un excelente desarrollador.

Por lo pronto puedes probar las novedades instalando un nuevo proyecto con:

composer create-project --prefer-dist laravel/laravel nombre-proyecto

o a través del instalador de Laravel:

laravel new nombre-proyecto

Si tienes proyectos activos en Laravel 5.4 pronto estaremos publicando una guía de cómo actualizarlo a Laravel 5.5. Pero si lo tienes en otra versión deberás actualizarlo versión por versión hasta llegar a la nueva 5.5.

Suscríbete a nuestro boletín

Te enviaremos publicaciones con consejos útiles y múltiples recursos para que sigas aprendiendo.

Material relacionado

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