Comparte en Facebook Twitter Google+

En esta charla de Laracon Online 2018, Taylor Otwell nos habla sobre el lanzamiento de Laravel 5.6 y los nuevos features que incluye esta versión. Ésta es una versión de mantenimiento no muy diferente a Laravel 5.5, sin embargo, como cada versión nueva de Laravel, incluye características muy interesantes, vamos a verlas:

Mejoras al Logging en Laravel

La personalización del logging de Laravel, ahora es mucho más potente y más parecida a otras partes del framework. Laravel 5.6 incluye un archivo llamado logging.php en la carpeta de configuración, donde puedes agregar “canales” de logging (channels), por ejemplo:

En tu aplicación puedes usar el log de la siguiente manera:

Ejecutar comandos en un solo servidor

Esta nueva opción nos permite que una aplicación que está ejecutándose en múltiples servidores limite la ejecución de comandos que cumplen la misma tarea al mismo tiempo a un solo servidor.

Limitar número de peticiones procesadas

Laravel nos permite limitar la cantidad de veces que queremos permitirle a un usuario acceder a una ruta utilizando el middleware throttle, como puedes ver a continuación:

El primer argumento del middleware se refiere a la cantidad de intentos máximos para acceder a la ruta y el segundo argumento es la cantidad de minutos. Es decir, en este ejemplo, un usuario podría acceder a la url '/throttle' 2 veces por minuto.

Laravel 5.6 nos permite definir un límite personalizado, en el ejemplo debajo pasamos el argumento rate_limit:

Si el usuario está conectado, Laravel va a obtener la información de la propiedad rate_limit del modelo de dicho usuario. Es decir, va a llamar a auth()->user()->rate_limit y a usar el valor retornado por esta propiedad como el número máximo de intentos permitidos.

Descarga de archivos con Storage::download

El nuevo método download de la clase Storage nos permite ofrecer descarga de archivos de manera muy sencilla:

Uso de Broadcasting con clases de tipo “Channel”

En Laravel 5.6 es posible definir clases para autorizar canales, lo cual es útil en situaciones donde tenemos muchas reglas y funciones anónimas en el archivo routes/channels.php:

Con php artisan make:channel es posible crear una nueva clase Channel:

Generación de controladores de recursos para APIs

Laravel 5.6 trae una nueva opción para generar controladores de tipo recurso para API, se trata por supuesto de la opción --api que fue agregada al componente make:controller:

php artisan make:controller TestApiController --api

Esta opción generará un controlador de tipo recurso sin los métodos create ni edit que se usan típicamente para mostrar formularios HTML y por supuesto no tienen mucha utilidad cuando estamos desarrollando una API.

Personalización de formatos de fechas y horas en Eloquent

Eloquent ya incluía la opción de $casts para poder transformar un atributo de un tipo a otro, por ejemplo un TINYINT a boleano, como ya hemos aprendido en los Cursos en Styde.

Ahora Laravel 5.6 nos permite personalizar el formato de los atributos que convirtamos a fechas:

En este ejemplo la columna last_seen_at (suponiendo que exista) será convertida a una fecha con el formato d-m-Y.

Argon hashing

Una alternativa a bcrypt para generar hashes es utilizar el driver argon en Laravel 5.6, el cual acepta más opciones de configuración que bcrypt:

El segundo llamado con más opciones incrementará el tiempo en el que se genera el hash.

Collision: Nueva dependencia de desarrollo

El paquete Collision, utilizado solo en el ambiente de desarrollo, permite que al momento de recibir una excepción en la terminal esta sea mucho más agradable a la vista, permitiéndonos comprender mejor el error:

Collision en Laravel 5.6

Cambios a la generación de módulos de autenticación

Las plantillas de autenticación y registro que son copiadas a tu aplicación a través del uso del comando php artisan make:auth, han sido actualizadas para usar Bootstrap 4 que ya está disponible en su versión oficial.

Además el paginador ya usa los estilos de Bootstrap 4 por defecto, pero puedes usar los de Bootstrap 3 si agregas el siguiente código a tu AppServiceProvider:

Nueva versión de Laravel Spark

Taylor también nos contó que la versión de Spark 6.0 estará disponible la semana próxima, es una actualización gratuita para quienes hayan comprado Spark recientemente y habrá un descuento de 50% para quienes ya hayan comprado Spark antes.

Material relacionado

Suscríbete a nuestro boletín

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

Aprende desarrollo web con Laravel, Vue.js y mucho más a partir de 9 USD al mes: ver planes.