Laravel Keynote - Laracon 2024

Taylor a révélé des nouveautés lors de l'événement Laracon 2024 : une extension VS Code, la gestion des problèmes N+1, l'exécution asynchrone et la plateforme Laravel Cloud pour un déploiement simplifié. Découvrez les nouveautés annoncées.


Laravel continue d'innover avec des fonctionnalités prometteuses, visant à enrichir l'expérience des développeurs et à optimiser les performances des applications. Voici un récapitulatif des principales annonces faites lors de Laracon 2024 :


Nouvelle extension VS Code pour Laravel

Taylor Otwell a annoncé la sortie d'une extension dédiée à Laravel pour VS Code. Cette extension offre des fonctionnalités telles que le highlight de Blade, l'auto-complétion à différents niveaux, des informations contextuelles au survol du code, et la génération de code.

Inspirée de Laravel Idea, cette extension se distingue par une intégration étroite avec VS Code, un éditeur largement adopté par la communauté.


Gestion des problèmes N+1

Laravel introduit une solution innovante pour gérer les problèmes N+1 grâce à la possibilité de "chaperonner" les relations.

Cette fonctionnalité permet de charger automatiquement le parent correct sur les modèles enfants, simplifiant ainsi la gestion des relations.

public function posts(): HasMany {
    return $this->hasMany(Post::class)->chaperone();
}

URL temporaire pour les fichiers locaux

Alors que la génération d'URL temporaire était jusqu'à présent limitée au driver S3, Laravel étend cette fonctionnalité au driver local.

Cela facilite la gestion des fichiers temporaires dans les environnements de développement, rendant les tests plus simples et plus efficaces.

$url = Storage::temporaryUrl('file.jpg', now()->addMinutes(5));

Exécution asynchrone sans queue

Parmi les annonces les plus marquantes, la fonction defer() représente une véritable révolution.

Ce helper permet d'exécuter du code de manière asynchrone sans avoir recours à une queue.

En cas d'exception, le code différé n'est pas exécuté, sauf si la méthode ->always() est chaînée, assurant ainsi une exécution en toute circonstance.

Route::get('/defer', function() {
    defer(fn () => Metrics::report());

    return view('defer');
});

Nouvelle approche de mise en cache

La méthode Cache::flexible() introduit un mécanisme où, si un utilisateur accède à une route pendant une période spécifique (définie par le 2ème paramètre de flexible()), les données mises en cache sont recalculées en utilisant defer().

Cela garantit des temps de chargement rapides tout en maintenant les données à jour, selon le principe de StaleWhileRevalidate.

Route::get('/flexible-cache', function() {
    $metrics = Cache::flexible('metrics', [5, 10], function() {
        return collect([
            Metrics::get(),
            Metrics::get(),
            Metrics::get(),
        ]);
    });

    return view('flexible', ['metrics' => $metrics]);
});

Comme avec defer(), une exception annule l'exécution du code en différé, à moins que always() soit utilisé.


Exécution concurrente des closures

Laravel permet désormais d'exécuter du code de manière concurrente. Cela ajoute une flexibilité supplémentaire au traitement asynchrone, le tout sans nécessiter de queue.

Route::get('/concurrency', function() {
    $metrics = Concurrency::run([
        fn () => Metrics::get(),
        fn () => Metrics::get(),
        fn () => Metrics::get(),
    ]);

    return view('concurrency', ['metrics' => $metrics]);
});

Bien sûr, Concurrency::defer() utilise le même mécanisme de always() pour assurer l'exécution en cas d'exception.


Laravel Cloud

Enfin, Laravel Cloud a été dévoilé :

Laravel Cloud is a fully managed infrastructure platform built for developers and teams who just want to ship their next big idea, and it's relentlessly optimized for Laravel and PHP.

Cette plateforme permet de déployer son dépôt en quelques secondes, avec des fonctionnalités telles que la création d'environnements, de bases de données, le scaling des ressources, la gestion des workers, le tout avec la gestion des certificats SSL, la protection DDOS, et un domaine dédié laravel.cloud.


Laravel,

Ces annonces montrent que Laravel continue d'innover pour offrir une productivité accrue et des performances optimisées aux développeurs. Pour découvrir d'autres annonces, notamment du côté d'Inertia, consultez la rediffusion de Laracon 2024 :


Image de profil - Stéphane MULOT

Stéphane MULOT

Développeur PHP (Symfony / Laravel)