Novedades de Laravel 10

Teniendo en cuenta lo mucho que ha simplificado el desarrollo PHP tanto para principiantes como para desarrolladores profesionales, algunos podrían incluso afirmar que ha malcriado a los desarrolladores haciéndoles creer que PHP es el lenguaje de programación más fácil que existe.

Actualizaciones de Laravel 10

1. PHP 8.1: En el Corazón de Laravel 10

PHP 8.1 es la versión PHP mínima requerida en Laravel 10. Algunas características de PHP 8.1, como las propiedades readonly y array_is_list, se utilizan en Laravel 10.

2. Soporte para PHP 8.2

PHP 8.2 fue lanzado el 8 de diciembre de 2022, sólo dos meses antes de la fecha de lanzamiento de Laravel 10. Sin embargo, esto no debería impedirte utilizar las características de PHP 8.2, ya que sin hacer nada extra, Laravel 10 está preparado para PHP 8.2.

3. Actualización de los Paquetes Oficiales de Laravel

No sólo el framework se mantiene profesionalmente y se actualiza con regularidad, sino también todos los paquetes oficiales y el ecosistema.

La siguiente es una lista de los paquetes oficiales de Laravel más recientes que se han actualizado para dar soporte a Laravel 10:

  1. Breeze
  2. Cashier Stripe
  3. Dusk
  4. Horizon
  5. Installer
  6. Jetstream
  7. Passport
  8. Pint
  9. Sail
  10. Scout
  11. Valet
4. Actualización de la Versión de Predis

Predis es un robusto cliente Redis para PHP que puede ayudarte a sacar el máximo partido del almacenamiento en caché para ofrecer una fantástica experiencia de usuario. Anteriormente Laravel soportaba las versiones 1 y 2, pero a partir de Laravel 10, el framework ya no soporta Predis 1.

5. Declaraciones Nativas de Tipos

Laravel solía utilizar DocBlocks en su esqueleto de código para aclarar qué hace un trozo de código y qué tipo de parámetros o respuestas esperar. Sin embargo, gracias a las declaraciones nativas de tipos en Laravel 10, esto cambiará.

En lugar de que una función tenga este aspecto:

ANTERIOR

/** * Determine whether the user can create models. * * @param {{ namespacedUserModel }} $user * @return IlluminateAuthAccessResponse|bool */
public function create({{ user }} $user) { // }
ACTUAL

/** * Determine whether the user can create models. */
public function create({{ user }} $user): bool { // }
6. Todas las Reglas de Validación Invocables por Defecto

Si quisieras hacer una regla de validación invocable en Laravel 9, tendrías que añadir una bandera --invokable después del comando Artisan. Esto ya no es necesario porque todas las reglas de Laravel 10 son invocables por defecto. Por lo tanto, puedes ejecutar el siguiente comando para crear una nueva regla invocable en Laravel 10:

php artisan make:rule CustomRule
7. Soporte Nativo de Modificación de Columnas

En un intento de eliminar la necesidad del paquete DBAL (doctrine/dbal) cuando se utiliza change() para modificar columnas, se ha introducido una nueva característica en Laravel 10 que permite a los desarrolladores utilizar el método change() y modificar columnas con MySQL, PostgreSQL y SQL Server sin necesidad de paquetes adicionales. Se trata de un cambio importante y arriesgado, pero creemos que merece la pena, ya que eliminará la dependencia de un paquete adicional.

8. Recuperación Nativa de Tipo de Columna

Otra característica destacable de Laravel 10 es la posibilidad de utilizar el método Schema::getColumnType sin tener que depender del paquete doctrine/dbal. Actualmente utilizamos Schema::getColumnType con DBAL para obtener el tipo de columna. DBAL mapea cada tipo de columna nativo a su equivalente de tipo DBAL, y no admite muchos de los tipos de columna utilizados por Laravel en varias bases de datos.

En Laravel 10, en cambio, el nuevo método Schema::getColumnType devolverá el tipo de columna real en lugar de su equivalente DBAL. También te permite escribir pruebas de integración para la nueva función nativa de modificación de columnas.

9. Algoritmo Hashing Más Rápido

xxHash es un algoritmo Hash increíblemente rápido. Presenta una gran aleatoriedad y dispersión de salida, así como unicidad para reducir las colisiones. Dado que PHP 8.1 proporciona soporte para xxh128, y dado que Laravel 10 se ejecuta sobre PHP 8.1, tener un algoritmo hash tan fiable dentro de Laravel 10 es ideal.

10. whereExists() Soporte de Métodos para Eloquent Builder

Actualmente, el uso de whereExists() requiere configurar la consulta anidada mediante un cierre. Afortunadamente, con Laravel 10, ahora es posible incluir un Eloquent Builder como consulta anidada. Esto permite utilizar métodos personalizados del constructor, ámbitos del modelo, etc.

11. Optimización de la Carga Eager

Una de las novedades interesantes de Laravel 10 es la optimización de la eager cuando no hay claves que cargar. Este cambio es más una corrección que una característica, ya que aborda un problema actual en el que las relaciones de carga eager provocan que se ejecuten un gran número de consultas imposibles.

12. $path Opcional para Métodos de Sistema de Archivos

En Laravel 10, el parámetro $path es opcional para los siguientes métodos:

  • FilesystemAdapter#putFile
  • FilesystemAdapter#putFileAs
  • UploadedFile#store
  • UploadedFile#storeAs
  • UploadedFile#storePublicly
  • UploadedFile#storePubliclyAs

Así que en lugar de hacer esto para almacenar un archivo subido en Amazon S3:

Storage::disk('s3')->putFile(‘post/images', $uploadedFile);

…podemos hacer esto:

Storage::disk(Disk::PostImages)->putFile($uploadedFile)

Fuente: Kinsta