Laravel 5.8

Una nueva versión de Laravel ya está disponible y es la 5.8. En esta publicación estaremos conociendo algunas de las mejoras aplicadas a esta versión. Debemos destacar que esta no es una versión LTS y por lo tanto el soporte para errores se recibirá por 6 meses (hasta Agosto de 2019) y las correcciones de seguridad por 1 año (hasta Febrero de 2020).

Nuevos diseños para los errores

Laravel 5.8 incluirá nuevas páginas de error con un diseño muy minimalista que pretende ser más adecuado para una variedad de sitios web y aplicaciones web sin necesidad de ser rediseñado para que se ajuste a un tema.

Error 403 en Laravel 5.8

Relaciones Has One Through en Eloquent

Eloquent ahora proporciona soporte para el tipo de relación hasOneThrough (tiene uno a través). Un ejemplo de su uso puede ser el de un modelo Order con un user_id asociado. Esa tabla de users también tiene relación con una tabla profile.

Se pueden obtener los datos del usuario relacionado con una orden, pero no se puede obtener el perfil del usuario desde la orden porque no existe una relación directa entre las ordenes y los perfiles. Esta nueva relación nos permitirá crear una conexión entre los modelos sin tener una relación directa.

public function userProfile()
{
    return $this->hasOneThrough(Profile::class, User::class);
}

Helpers para arreglos y cadenas en desuso

Todos los helpers array_* y str_* han quedado en desuso y serán eliminados definitivamente en la próxima versión. Ahora debes usar los métodos de las clases Illuminate\Support\Arr y Illuminate\Support\Str.

Puedes obtener nuevamente los métodos en desuso instalando el paquete laravel/helpers como una solución si quieres continuar usándolos.

Mejoras en la validación de correos electrónicos

La lógica de validación de correos electrónicos anterior de Laravel a veces consideraba que los correos electrónicos válidos, como example@bär.se, eran inválidos. En esta nueva versión ya no sucede esto y pasa la comprobación, pues se agregó el paquete egulias/email-validatorutilizado por SwiftMailer para validar las direcciones de correo electrónicos acorde con el validador RFC822.

Zona horaria predetermina para las tareas programadas

Desde esta nueva versión se puede definir un método scheduleTimezone en el archivo app/Console/Kernel.php. Este método debe devolver la zona horaria predeterminada que debe asignarse a todas las tareas programadas:

protected function scheduleTimezone()
{
    return 'America/Caracas';
}

Cambios al método call de Artisan

En versiones anteriores de Laravel, las opciones del comando se pasan a través de un arreglo como el segundo parámetro del método.

En esta nueva versión pasamos el comando completo, incluidas las opciones, en el primer parámetro del método con una cadena:

Artisan::call('migrate:install --database=foo');

Resolución automática de políticas de acceso

Desde esta nueva versión ya no necesitamos agregar al arreglo $policies de la clase AuthServiceProvider el modelo asociado a una nueva política.

Al crear una nueva política para un modelo Item por ejemplo, debemos seguir la convención Nombre+Policy, en este caso sería ItemPolicy. Con esto ya tendríamos una asociación entra la política y el modelo.  Sin necesidad de registrarlo en un service provider para poder usarlos.

Mejoras al comando serve de Artisan

A partir de Laravel 5.8, serve ahora buscará los puertos disponibles hasta el puerto 8009, lo que le permite levantar múltiples aplicaciones a la vez en caso de que ya este usando el puerto 8000.

Multiples Guards de Autentificación para Broadcast

En versiones anteriores de Laravel, los canales de transmisión privados y de presencia autenticaban al usuario a través de la protección de autenticación predeterminada de tu aplicación. A partir de Laravel 5.8, ahora puedes asignar múltiples «guards» que deben autenticar la solicitud entrante.

Preservación de Llaves para Recursos Eloquent

En versiones anteriores cuando usamos recursos Eloquent como:

use App\User;
use App\Http\Resources\User as UserResource;

Route::get('/user', function () {
    return UserResource::collection(User::all());
});

Las llaves de los elementos de la colección se reinician. Sin embargo, en Laravel 5.8 Puedes agregar la propiedad preserveKeys a tu modelo, la cual indicará si se deben conservar las llaves de los registros y para mantener la coherencia con las versiones anteriores de Laravel, las llaves se reiniciarán por defecto.

Cumplimiento del estándar PSR-16 (Caché simple)

Ahora en Laravel 5.8 se ha implementado el estándar PSR-16 para el manejo de la caché: https://www.php-fig.org/psr/psr-16/ la cual provee una interfaz simple para los elementos de caché y sus drivers. Un cambio significativo es que el tiempo de vida (TTL) ahora será expresado en segundos con lo cual podemos ser más específicos a la hora de asignar dicho tiempo.

// Almacena por 30 segundos
Cache::put('foo', 'bar', 30);

// Almacena por 30 segundos en Laravel 5.7 / 5.8 
Cache::put('foo', 'bar', now()->addSeconds(30));

Soporte para Carbon 2.0 y Pheanstalk 4.0

Laravel 5.8 proporciona soporte para la versión ~ 2.0 de Carbon y si estás utilizando la biblioteca Pheanstalk en tu aplicación, puedes actualizar la biblioteca a la versión ~ 4.0 a través de Composer ya que desde esta nueva versión están disponibles.

0tros cambios

Hay muchos otras mejoras incluidas en esta nueva versión de Laravel:

  • Nuevos métodos de pruebas para hacer mock y spy
  • Mejora en la seguridad para token guards usando hashing
  • Nuevo método de Eloquent orWhere
  • Mapeo de los archivos de cache de vistas, indicando la ruta de la vista que la genera.
  • Entre muchos otros.

Como siempre en Styde.net estamos trabajando para mantenerte informado y actualizado con las novedades que podrás usar en tus proyectos usando Laravel 5.8.

Desde ya puedes instalar un proyecto para que puedas probar de primera mano las novedades con:

composer create-project --prefer-dist laravel/laravel proyecto58

O si tienes el instalador de Laravel puedes ejecutar:

laravel new proyecto58

Te invitamos a estar atento a nuestro blog y a nuestras redes sociales ya que estaremos dedicando artículos completos a las nuevas características de esta versión.

Suscríbete a nuestro boletín

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

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