Icono del sitio Blog de Programación y Desarrollo – Nube Colectiva

Las Novedades más destacadas que trae Laravel 7

La versión de Laravel 7 ha sido lanzada el día 03 de marzo de 2020 y en esta versión se continúan muchas mejoras que se iniciaron en la versión de Laravel 6, entre estas novedades y mejoras están las mejoras de enrutamiento, Eloquent Casts personalizados, etiquetas de componentes Blade, entre otras características que te contaré en este Post.

Antes de continuar con este Post te invito a escuchar el Podcast: “Donde buscar ayuda sobre Programación”:

Spotify:

Sound Cloud:

Bien ahora continuemos con el Post: Las Novedades más destacadas que trae Laravel 7.

Para tener una mejor idea de las novedades en Laravel 7, voy a compartir el nombre de la novedad, una descripción y una imagen si es posible.

Personalizar Stubs

En Laravel, los comandos make en la consola Artisan nos permiten crear controladres, jobs, migraciones, modelos, etc. Estas clases generan archivos stubs que se rellenan con valores basados en su input.

En ocasiones, puede que necesites hacer pequeños cambios en los archivos generados por Artisan. Laravel 7 ha añadido un comando para publicar los stubs:


Los stubs publicados se guardan dentro de un directorio stubs en la raíz del proyecto y cualquier cambio que se hagan en estos archivos, se verán reflejados cuando se generen las clases correspondientes utilizando el comando artisan make.

Laravel Airlock

Esta herramienta proporciona un sistema de autenticación para Aplicaciones de una sola página o Simple Page Application (SPA), aplicaciones móviles y APIs simples que trabajen con autenticación mediante tokens. Laravel Airlock fue creado por Taylor Otwell (Creador de Laravel) y permite que cada usuario genere sus propios tokens de seguridad en su cuenta, a estos tokens se le puede otorgar habilidades o ámbitos que especifiquen que acciones puedan realizar.

Si quieres saber mas sobre la autenticación por tokens en Laravel, te recomiendo leer el artículo Laravel 5.4: Guardar información de un usuario en un Token mediante JWT y si deseas saber más sobre Laravel Airlock puedes leer su documentación oficial.

Eloquent Casts Personalizados

Laravel cuenta con muchas características y utilidades Eloquent que permiten manipular o convertir los datos de una Base de Datos, en ocasiones puede que necesitemos definir nuestros propios tipos de manipuladores o convertirores de datos, ahora podemos crearlos definiendo una clase que llame a la interface CastsAttributes

Las interface CastsAttributes debe contar con 2 métodos, uno llamado get el cual es el responsable de transformar un valor sin procesar de la base de datos a una valor en estado de conversión y el otro método es set el cual transforma un valor en estado de conversión a un valor sin procesar el cual puede ser almacenado en la Base de Datos.

Por ejemplo si necesitamos implementar el tipo de conversión personalizado a formato JSON:


Si deseamos podemos llamar el nombre de la clase como un valor dentro de un atributo, por ejemplo dentro del atributo options:


Si deseas aprender más sobre el uso de Eloquent Casts Personalizados, puedes consultar su documentación oficial.

Etiquetas en Componentes Blade y otras mejoras

En Laravel 7 un componente ahora puede tener una clase asociada que especifica los datos que debe aceptar el componente. Las propiedades y métodos públicos definidos en la clase asociada a un componente estarán automáticamente disponibles en la  vista del componente.

Cualquier atributo HTML adicional que sea especificado en el componente, se puede administrar utilizando la variable $attribute que permite instanciar varios atributos adicionales al componente.

Por ejemplo, supongamos que hemos definido un componente llamado Alerta:


Y supongamos que la plantilla Blade del componente se ha definido así:


El componente se puede renderizar en otra vista Blade, utilizando la etiqueta del componente (alerta):


Esto es solo una pizca de esta nueva característica, ya que también podemos trabajar con componentes anónimos, componentes de vista en línea y varias características, puedes aprender más en su documentación oficial.

Cliente HTTP (Guzzle)

Laravel 7 ha incorporado una API basada en el cliente Guzzle PHP HTTP que permite realizar de manera ágil solicitudes HTTP, por ejemplo de manera ágil y simple podemos hacer una solicitud POST e interactuar con los datos JSON:


Asimismo el cliente HTTP nos proporciona una genial funcionalidad para hacer pruebas de manera dinámica:


Si desea saber más sobre esta nueva funcionalidad, puedes consulta su documentación oficial.

Operaciones fluidas con String

Si estas familiarizado con la clase existente en Laravel que permite manipular Strings, ahora en Laravel 7 se ha añadido una biblioteca de manipulación de Strings que esta más orientada a objetos y es más fluida. Puedes crear un objeto más fluido Illuminate\Support\Stringable usando el método Str::of al cual luego le puedes encadenar una  variedad de métodos que te permiten manipular el String:


Para saber más sobre las operaciones fluidas con Strings, puedes leer su documentación oficial.

Mejoras en Route Model Binding

En Laravel 7 se han añadido un par de mejoras de esta característica:

Personalizar Key

En ocasiones puede que necesites trabajar con modelos Eloquent utilizando otra columna que no sea id y ahora puedes personalizar la columna que desees definiendolo en el parámetro de una ruta, por ejemplo podemos usar el slug de un registro de la Base de Datos:


Scoping Automático

En algunas ocasiones, cuando se vinculan implícitamente varios modelos Eloquent en una sola definición de ruta, es posible que necesites abarcar el segundo modelo Eloquent de modo que sea un elemento secundario del primer modelo Eloquent.

Por ejemplo, considera el siguiente ejemplo, en donde se recupera la publicación de un Blog haciendo usa de la columna slug, para un usuario específico:


Cuando se utiliza un enlace implícito, con una key personalizada como parámetro de una ruta anidada, Laravel 7 analiza automáticamente la consulta para recuperar el modelo anidado por su padre, utilizando convenciones para adivinar el nombre de la relación en el padre. En este caso, se supone que el modelo User tiene una relación con la llamada posts (el plural del nombre del parámetro de ruta), que se puede utilizar para recuperar el modelo Post.

Si quieres saber más sobre esta característica, puedes leer su documentación oficial.

Múltiples Drivers (Controladores) de Correo

Laravel 7 permite configurar múltiples remitentes en una aplicación, cada aplicación configurada en el archivo mail.php puede tener sus propias opciones y su propios servicios de correo para enviar mensajes de correo electrónico.

Por ejemplo una aplicación podría usar Postmark para enviar correo transaccional mientras se usa Amazon SES para enviar correo masivo.

Por defecto Laravel usará la configuración establecida en archivo mail.php, sin embargo podemos utilizar el método mailer para enviar un mensaje utilizando una configuración de correo específica:

Mejoras en la velocidad de caché de Ruta

En aplicaciones grandes que cuenten por ejemplo con mas de 700 rutas o más, la velocidad es 2 veces mayor al hacer solicitudes de las rutas, no se requieren hacer cambios en las solicitudes, solo debes usar el comando php artisan route:cache y Laravel 7 llevará acabo mejoras en la velocidad de las rutas almacenadas en caché.

Soporte CORS

Laravel 7 ha añadido soporte para CORS mediante la integración del popular paquete Laravel CORS creado por Barry vd Heuvel. El soporte permite configurar OPTIONS en las solicitudes de uso compartido de recursos de origen cruzado (CORS).

Método withCasts

En algunas ocasiones puede que necesites convertir algunas consultas, por ejemplo si seleccionamos un valor sin formato de una tabla como el valor ultima_publicacion:


Puedes ver que el atributo last_posted_at de la consulta será un String sin formato. Es conveniente si pudieramos aplicar una conversión date a este atributo al ejecutar la consulta. Esto lo podemos hacer con el método whitCasts en Laravel 7:

Mejoras de MySQL 8 + Database Queue

En versiones anteriores de Laravel, la database Queue se consideraba lo suficientemente robusta para el uso en producción, debido a determinados puntos. Ahora Laravel 7 proporciona mejoras en las aplicaciones que usan MySQL 8 como la Database Queue respaldada.

Al usar la clausula FOR UPDATE SKIP LOCKED y otras mejoras de SQL, el driver database ahora se puede usar de forma segura en aplicaciones de mayor volumen.

Comando ‘php artisan test’

En Laravel 7, además del comando phpunit, ahora podemos hacer uso del comando php artisan test para realizar pruebas. Este proporciona una hermosa consola UX con información sobre la prueba que se esta llevando acabo actualmente.

Asimismo la prueba se detendrá automáticamente en el primer fallo que encuentre en la prueba que se esta llevando acabo.

Cualquier argumento que se pueda usar en el comando phpunit, también se puede usar en el comando php artisan test:

Mejoras en la Plantilla Markdown Mail

La plantilla de correo predeterminada Markdown ha recibido un nuevo diseño más moderno basado en la paleta de colores del Framework Tailwind CSS. Esta plantilla porsupuesto la puedes personalizar según tus necesidades.

Si necesitas saber más, puedes leer su documentación oficial.

Configuración de Queue maxExceptions

Algunas veces puede que desees indicar que una tarea se debe intentar muchas veces, pero debería fallar si los intentos se activan por un determinado número de excepciones. En Laravel 7 podemos definir la propiedad maxExceptions, por ejemplo:


Eso es todo, hasta la fecha de este artículo, estas son las Novedades que trae Laravel 7, con el paso de las Meses iremos viendo nuevas novedades sobre este Framework.

Nota(s)

 

Síguenos en nuestras Redes Sociales para que no te pierdas nuestros próximos contenidos.

Salir de la versión móvil