Se acerca el lanzamiento de Laravel 5.8 y en Laravel Tip te traemos las nuevas características, mejoras y correcciones de errores que tendrá disponible esta versión.
Carbon 2.0 disponible en Laravel 5.8
A partir de Laravel 5.8 podrás elegir entre utilizar Carbon 1.0 o su nueva versión, Carbon 2.0. La nueva versión de Carbon permite que sea inmutable e incluso hacer que tu aplicación use CarbonImmutable
como predeterminado.
¿Qué es Carbon Inmutable?
La Mutabilidad e Inmutabilidad es un concepto importante en la programación. Un objeto inmutable es aquel que no puede ser modificado una vez creado, por ejemplo, los objetos que guardan sus resultados en cache son considerados Inmutables. Por el contrario, los objetos mutables pueden modificar su valor.
Carbon es una excelente paquete que nos sirve para trabajar con fechas pero su detalle es que fue construido sobre el objeto DateTime
que es un objeto mutable. Esto hace que Carbon nos permita hacer cosas como estas:
$now = \Carbon\Carbon::createFromDate(2018, 3, 15); echo $now; // 2018-03-15 06:13:54
$tresMesesDespues= $now->addMonths(3); echo $tresMesesDespues; // 2018-06-15 06:13:54
echo $now; // 2018-06-15 06:13:54 😕
Utilizando Carbon 2 tenemos disponible CarbonImmutable
. Utilizando CarbonImmutable, el ejemplo anterior se comportaría de la siguiente forma:
$now = CarbonImmutable::createFromDate(2018, 3, 15); echo $now; // 2018-03-15 06:13:54
$tresMesesDespues = $now->addMonths(3); echo $tresMesesDespues; // 2018-06-15 06:13:54
echo $now; // 2018-03-15 06:13:54 😀
Si quieres tener tu código preparado para migrar a Carbon 2, puedes ir mirando la documentación oficial: https://carbon.nesbot.com/docs/#api-carbon-2
Helpers de Array y String en desuso
En Laravel 5.8 los helpers de array y string quedarán en desuso, y seran eliminados en las próximas versiones del framework.
¿Por qué se eliminan los helpers?
Como paso en Laravel 5.x donde los helpers de Form y Html fueron eliminados de su código, lo mismo va a ocurrir con las funciones de array y string. Esto se realiza porque no todas las personas utilizan estos helpers y ayuda a mantener el framework simple y más fácil de mantener.
Si deseas utilizarlos, existirá un paquete mantenido por la comunidad que te permitirá utilizar las funciones en desuso en Laravel 5.8. (como sucedió con Form/Html que ahora están disponibles en Laravel Collective).
Cambios en funciones de Cache para Laravel 5.8
En Laravel 5.8 se deberá definir el tiempo de vida de los elementos guardado en cache en segundos en vez de minutos. El almacenamiento en caché en segundos nos permite tener un mayor control sobre la duración del almacenamiento en caché, además, se ajusta al estándar de PSR-16.
Hasta Laravel 5.7, utilizábamos funciones de cache, como put()
o remember()
, donde pasábamos un entero que representaba la cantidad de minutos que iba a persistir los datos en cache. Ahora, ese entero se interpretará como segundos.
Desde Laravel Tip te recomendamos que estés preparado para este cambio modificando los enteros por funciones que hagan lo mismo.
// Modificar esto:
Cache::remember('releated-products', 5, function () {
return Product::releated()->get();
});
// Por esto:
Cache::remember('releated-products', now()->addMinutes(5), function () {
return Product::releated()->get();
});
De esta forma, tu aplicación estará mas preparada para la actualización a Laravel 5.8 y aplicas una buena practica.
¿Cuándo estará disponible Laravel 5.8?
No sabemos la fecha exacta pero Taylor anuncio que sería para Febrero del 2019.
Compatibilidad de Laravel 5.8 con PHP 7.4
Hace un tiempo vimos las Novedades de PHP 7.4 y si te estas pregunta si Laravel 5.8 va a soportar la nueva versión de PHP, la respuesta es, no por el momento. Ya que PHP 7.4 se estima que salga para finales del 2019. Pero no te hagas problema, porque sabemos que Laravel se actualiza cada 6 meses y seguramente sus futuras versiones soportarán PHP 7.4.
Conclusión
En mi opinión, son pocas las nuevas características que estarían disponible en Laravel 5.8, puedes leer la lista completa de cambios en la documentación de Laravel. Me gustaría leer en los comentarios que te han parecido las nuevas características y si sabes de algunas mas que pase por alto en este artículo.