Un vistazo a lo que viene con Laravel 11

- Andrés Cruz

Laravel 11 no está programado para lanzarse hasta el primer trimestre de 2024, pero se han compartido algunas características nuevas y Taylor presenta algunas mejoras nuevas importantes en su discurso de apertura de Laracon.

Estructura de directorio optimizada

Hasta ahora, esto es sólo una vista previa beta. Es posible que cambien, pero a partir de ahora, esto es lo que puede esperar...

Los controladores ya no amplían nada de forma predeterminada.

No más directorio de middleware. Actualmente, Laravel incluye nueve middleware y muchos de ellos nunca los personalizarías. Sin embargo, si desea personalizarlos, se mueve a la aplicación/proveedor de servicios. Por ejemplo:

public function boot(): void
{
   EncryptCookies::except(['some_cookie']);
}

No más HTTP/Kernel

La mayoría de las cosas que antes podías hacer en el Kernel, ahora puedes hacerlas en Bootstrap/App.

return Application::configure()
   ->withProviders ()
   -›withRouting(
       web: __DIR__.'/../routes/web.php'
       commands: __DIR__.'/../routes/console.php',
   )
   ->withMiddleware(function(Middleware Smiddleware) {
       $middleware->web(append: LaraconMiddleware::class):
   })

Cambios en el modelo

Las conversiones de modelos ahora se definen como un método en lugar de una propiedad. Cuando se define como un método, podemos hacer otras cosas, como llamar a otros métodos directamente desde las conversiones. Aquí hay un ejemplo que utiliza una nueva AsEnumCollection de Laravel 11:

protected function casts(): array
{
   return [
       'email_verified_at' => 'datetime',
       'password' => 'hashed',
       'options'=› AsEnumCollection::of(UserOption::class),
   ];
}

Nuevo Dumpable Trait

Esto tiene como objetivo optimizar el núcleo del marco, ya que actualmente varias clases tienen métodos "dd" o "dump". Además, puedes usar el trait Dumpable en tus propias clases:

class Stringable implements JsonSerializable, ArrayAccess
{
   use Conditionable, Dumpable, Macroable, Tappable;

   str('foo')->dd();
   str('foo')->dump();

Cambios de configuración

Laravel tiene muchos archivos de configuración, Laravel 11 los elimina y todas las opciones de configuración caen en cascada. El .env se ha ampliado para incluir todas las opciones que desee configurar.

Para combinar con esto, hay un nuevo comando config:publish para que pueda recuperar cualquier configuración que desee. Incluso si las recupera, la nueva función de cascada le permite eliminar todas las opciones que no desea personalizar.

Migraciones predeterminadas reducidas

Cuando inicias una nueva aplicación Laravel, viene con algunas migraciones predeterminadas de 2014 y 2019. Ahora vendrán con las fechas eliminadas y trasladadas a solo dos archivos.

Cambios de rutas

De forma predeterminada, sólo habrá dos archivos de ruta, console.php y web.php. Las rutas API ahora se habilitarán a través de php artisan install:api, brindándole el archivo de rutas API y Laravel Sanctum.

Lo mismo ocurre con la transmisión websocket, instalación artesanal de php: transmisión.

Kernel de consola eliminado

El kernel de la consola se está eliminando y, en su lugar, podrá definir los comandos de su consola directamente en route/console.php.

Named Arguments

Los argumentos con nombre no están cubiertos por las pautas de compatibilidad con versiones anteriores de Laravel. Podemos optar por cambiar el nombre de los argumentos de la función cuando sea necesario para mejorar el código base de Laravel. Por lo tanto, el uso de argumentos con nombre al llamar a métodos de Laravel debe hacerse con cautela y entendiendo que los nombres de los parámetros pueden cambiar en el futuro.

Eager Load Limit

Laravel 11 integra el código detrás del paquete "límite de carga ansiosa":

User::select('id', 'name')->with([
   'articles' => fn($query) => $query->limit(5)
])->get();

Soporte mínimo de PHP 8.2

Esta fue una decisión temprana, pero las aplicaciones de Laravel 11 requieren un mínimo de PHP 8.2. Si está ejecutando una versión anterior de PHP, ahora es un buen momento para actualizarla.

https://laravel-news.com/laravel-11

Andrés Cruz

Desarrollo con Laravel, Django, Flask, CodeIgniter, HTML5, CSS3, MySQL, JavaScript, Vue, Android, iOS, Flutter

Andrés Cruz en Udemy

Acepto recibir anuncios de interes sobre este Blog.