Laravel 11 : les nouveautés à connaître

15 mars 2024

Sortie le 12 mars 2024, cette nouvelle version de Laravel introduit un certain nombre de nouveautés, notamment pour les nouveaux projets : c’est en effet une version très allégée (0% de matière grasse), où tous les fichiers non essentiels ont été supprimés des nouvelles applications. ...

Sortie le 12 mars 2024, cette nouvelle version de Laravel introduit un certain nombre de nouveautés, notamment pour les nouveaux projets : c’est en effet une version très allégée (0% de matière grasse), où tous les fichiers non essentiels ont été supprimés des nouvelles applications. Comme toutes les autres versions majeures de Laravel, il y a aussi un certain nombre de nouveautés et d’améliorations au programme.

Nettoyage de la structure de fichiers

LA grande nouveauté de Laravel 11, c’est bien celle-là : le boilerplate de l’application (c’est-à-dire les fichiers présents lorsque l’on crée une nouvelle application Laravel) a été taillé dans la masse, il ne reste plus que quelques fichiers essentiels.

Les fichiers suivants du dossier app ont donc été supprimés :

  • Tous les middlewares dans app/Http/Middleware
  • Le kernel HTTP : app/Http/Kernel.php
  • Tous les providers, à l’exeption du AppServiceProvider
  • Le kernel de la console Artisan : app/Console/Kernel.php

Dans le dossier config, les fichiers non essentiels pour la plupart des applications Laravel ont été supprimés (cors.php, broadcasting.php, sanctum.php, etc.). À noter que les providers ne sont plus présents dans le fichier app.php.

En ce qui concerne le dossier database, c’est presque la même chose, à part que les migrations par défaut ont été réorganisées et nettoyées.

Pour les routes, on voit que les fichiers routes/api.phpet routes/broadcasting.php ne sont plus présents par défaut.

Dans le dossier des tests, seul le trait CreateApplication a été supprimé.

Mais du coup, où sont passés tous ces fichiers ? Qu’est-ce qui les remplace ?

Désormais, une bonne partie de la configuration de votre application Laravel se fait dans le fichier bootstrap/app.php :

Cela concerne donc le routing (avec la méthode withRouting), les middlewares via withMiddleware, les providers (withProviders), et bien d’autres.

Pour les commandes de console, tout se passe désormais dans le fichier routes/console.php.

Enfin, pour les fichiers d’API, il faut maintenant lancer la commande php artisan install:api pour utiliser cette fonctionnalité. Cela intègre Laravel Sanctum dans votre application. Même chose pour le broadcasting : php artisan install:broadcasting.

Nouvelle route de health-check

Une autre nouveauté intéressante (notamment pour votre Dev/Ops) est la nouvelle route /up incluse dans chaque application Laravel 11, permettant de vérifier si l’application se démarre correctement sans lever d’exception. Si c’est le cas, une page avec comme code de statut 200 est affichée :

Sinon, c’est une erreur 500 qui est renvoyée, avec le message d’erreur si on est en environnement de développement :

Mais là où cette nouvelle route spéciale devient intéressante, c’est qu’il est possible de faire des vérifications en écoutant l’événement DiagnosingHealthEvent qui est lancé lors de l’appel à cette route :

Autres améliorations

Il y a un certain nombre d’autres améliorations qu’il est possible de retrouver dans les release notes, mais voici celles qui nous intéressent particulièrement :

  • PHP 8.2 minimum requis
  • Plus de dépendance à Doctrine DBAL
  • Laravel Reverb, un nouveau serveur de Websockets

Notre avis à propos de cette nouvelle version

Laravel 11 est une version très intéressante, car elle élimine tout le superflu de l’application.

Un développeur maitrisant Laravel sera ravi de cette mise à jour : seuls les fichiers nécessaires seront présents, cela limite le risque de non-uniformité du code dans ces fichiers et force à respecter les bonnes pratiques du framework.

En revanche, il y a un risque que les développeurs juniors aient plus de mal à appréhender le framework puisque tous les fichiers sont désormais “cachés” dans les vendor, au lieu d’être directement accessible dans l’application. Affaire à suivre.

Et vous, quand avez-vous prévu de tester cette nouvelle version ?

Merci de votre lecture 😎

Ecrit par
Rémi Bertin

Recevez par mail toute l’actualité de Mink

En cliquant sur "Ok", vous acceptez les CGU ainsi que notre politique de confidentialité décrivant la finalité des traitements de vos données personnelles.

Découvrez d'autres articles