¿Cuál es la última versión de Laravel?

¿Cuál es la última versión de Laravel?

Jorge García
Jorge García
Comparte:
En la actualidad, la última versión oficial de Laravel es la 10.
La versión 11 está en proceso de desarrollo y está programada para ser lanzada en febrero de 2024.
Aquí te muestro algunas de las novedades que tenemos hasta el momento.

Estructura de carpetas optimizada

En una instalación nueva de Laravel 11, el recuento de archivos ha disminuido en aproximadamente ~69 archivos. 
Los controladores no se extienden a nada por defecto
La carpeta config ya no existe
La carpeta middleware tampoco existe
Actualmente, Laravel incluye nueve middleware, y muchos de ellos probablemente nunca personalizarías. 
Sin embargo, si deseas personalizarlos, lo puedes hacer en el App/ServiceProvider. Por ejemplo:
public function boot(): void
{
    EncryptCookies::except(['some_cookie']);
}

Se removió la carpeta Http/Kernel

La mayoría de modificaciones que solías hacer en el Kernel ahora las puedes hacer en el archivo 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 Model casts 

Ahora, los Model Casts se definen como un método en lugar de una propiedad. 
Cuando se definen como un método, podemos hacer otras cosas, como llamar a otros métodos directamente desde las conversiones. 
Aquí tienes un ejemplo usando una nueva colección AsEnumCollection de Laravel 11:
 
protected function casts(): array
{
    return [
        'email_verified_at' => 'datetime',
        'password' => 'hashed',
        'options'=› AsEnumCollection::of(UserOption::class),
    ];
}

Nuevo Trait Dumpable

This aims to streamline the core of the framework since multiple classes currently have "dd" or "dump" methods. Plus you can use this Dumpable trait in your own classes:
class Stringable implements JsonSerializable, ArrayAccess
{
    use Conditionable, Dumpable, Macroable, Tappable;
 
    str('foo')->dd();
    str('foo')->dump();

Cambios en los archivos de configuración

Laravel cuenta con una gran cantidad de archivos de configuración, pero Laravel 11 los ha eliminado por completo.
El archivo .env se ha ampliado para incluir todas las opciones que mayormente se deben configurar.
Para complementar esto, se ha introducido un nuevo comando de artisan config:publish para que puedas recuperar cualquier configuración que desees. 

Nuevo método Once

Laravel 11 incluye un nuevo helper llamado "once" que garantiza que siempre obtendrás el mismo valor sin importar cuántas veces llames a un método de un objeto. 
La función "once" es útil cuando tienes código que deseas asegurarte de que se ejecute solo una vez.

Migraciones predeterminadas simplificadas

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

Cambios en las rutas

Por defecto, solo habrá dos archivos de rutas, console.php y web.php.
Las rutas de la API ahora serán opcionales a través del comando php artisan install:api, que te proporcionará el archivo de rutas de la API y Laravel Sanctum.
Lo mismo ocurre con el Broadcast WebSocket, php artisan install:broadcasting.

Nueva ruta UP

Laravel 11 incluirá una nueva ruta /up d que desencadenará el evento DiagnosingHealthEvent para que puedas integrar con alguna monitorización del tiempo de actividad.

Rotación de la APP_KEY

En versiones anteriores de Laravel, cambiar tu APP_KEY podía resultar en datos dañados en la base de datos.
Laravel 11 introduce una nueva rotación elegante que NO romperá los datos encriptados antiguos, utilizando una variable de entorno APP_PREVIOUS_KEYS que automáticamente volverá a encriptar los datos utilizando la nueva clave.

Console Kernel removido

Se ha eliminado el Console/Kernel, y en su lugar podrás definir tus comandos de consola directamente en outes/console.php.

Argumentos con nombre

Named arguments no están cubiertos por las pautas de compatibilidad hacia atrás de Laravel. Pueden optar por cambiar los nombres de los argumentos de las funciones cuando sea necesario para mejorar la base de código de Laravel. Al llamar a métodos de Laravel utilizando argumentos con nombre, se debe hacer con precaución y con la comprensión de que los nombres de los parámetros pueden cambiar en el futuro.

Límite de Eager Load

Laravel 11 integra el código detrás del paquete "eager load limit".
User::select('id', 'name')->with([
    'articles' => fn($query) => $query->limit(5)
])->get();

¿Cuándo se lanzará Laravel 11?

No se ha establecido una fecha oficial, aparte de que será en el primer o segundo trimestre de 2024. En Laracon EU insinuaron que sería en la primera o segunda semana de marzo de 2024.

Soporte mínimo de PHP 8.2

Las aplicaciones de Laravel 11 requieren un mínimo de PHP 8.2. Si estás ejecutando una versión más antigua de PHP, ahora es un buen momento para actualizar.

Se requiere SQLite 3.35.0 o superior

Si utilizas una base de datos SQLite, entonces Laravel 11 requerirá SQLite 3.35.0 o superior.

Eliminación de Doctrine DBAL

Laravel ya no depende de Doctrine DBAL y ya no es necesario registrar tipos de Doctrine personalizados para la creación y alteración adecuadas de varios tipos de columnas que anteriormente requerían tipos personalizados.
Instalar Laravel 11
Laravel 11 aún no se ha lanzado, pero puedes comenzar a usarlo y probarlo ejecutando laravel new con la opción --dev:
laravel new projectname --dev

Política de soporte de Laravel

Para todas las versiones de Laravel, se proporcionan correcciones de errores durante 18 meses y correcciones de seguridad durante 2 años. Para todas las bibliotecas adicionales, incluido Lumen, solo la última versión principal recibe correcciones de errores.

Version PHP (*) Release Bug Fixes Until Security Fixes Until
Laravel 9    | 8.0 - 8.2  | February 8th, 2022  | August 8th, 2023  | February 6th, 2024
Laravel 10  | 8.1 - 8.2  | Q1 2023                    | August 6th, 2024  | February 4th, 2025
Laravel 11  | 8.2           | Q1 2024                    | August 5th, 2025  | February 3rd, 2026

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