Laravel 11 est prévu pour la fin de l’année, mais certaines de ses nouvelles fonctionnalités ont déjà été partagées lors de la keynote de Taylor à Laracon. Dans cet article, nous allons examiner en détail les principales améliorations qui ont été annoncées.
Structure de répertoire simplifiée
Jusqu’à présent, ceci est une version bêta de prévisualisation et certaines modifications pourraient être apportées. Voici à quoi vous pouvez vous attendre :
– Les contrôleurs n’étendent plus rien par défaut, ce qui rend le code plus clair et modulaire.
– Le répertoire « middleware » n’existe plus. Laravel inclut actuellement neuf middleware, dont beaucoup ne nécessitent aucune personnalisation. Toutefois, si vous souhaitez les personnaliser, cela se fera désormais dans « App/ServiceProvider ». Voici un exemple :
public function boot(): void
{
EncryptCookies::except(['some_cookie']);
}
– La classe Http/Kernel est supprimée. La plupart des tâches qui étaient réalisables avec le Kernel peuvent désormais être effectuées dans « Bootstrap/App ». Cette modification rend la configuration plus simple et élégante :
return Application::configure()
->withProviders()
->withRouting(
web: __DIR__.'/../routes/web.php',
commands: __DIR__.'/../routes/console.php'
)
->withMiddleware(function(Middleware $middleware) {
$middleware->web(append: LaraconMiddleware::class);
});
Modifications des types de données de modèle
Les « casts » de modèle sont maintenant définis en tant que méthodes plutôt qu’en tant que propriétés. Cela ouvre de nouvelles possibilités, comme la possibilité d’appeler d’autres méthodes directement depuis les « casts ». Voici un exemple utilisant la nouvelle classe Laravel 11 AsEnumCollection :
protected function casts(): array
{
return [
'email_verified_at' => 'datetime',
'password' => 'hashed',
'options' => AsEnumCollection::of(UserOption::class),
];
}
Changements au niveau de la configuration
Laravel possède de nombreux fichiers de configuration, mais dans Laravel 11, ceux-ci sont supprimés et toutes les options de configuration se propagent de manière hiérarchique. Le fichier .env a été étendu pour inclure toutes les options que vous souhaitez définir. Pour restaurer d’anciennes configurations, vous pouvez utiliser la nouvelle commande « config:publish ». De plus, grâce à cette nouvelle fonctionnalité de propagation, vous pouvez facilement supprimer les options de configuration que vous ne souhaitez pas personnaliser.
Migrations par défaut allégées
Lorsque vous démarrez une nouvelle application Laravel, des migrations par défaut datant de 2014 et 2019 sont incluses. Dans Laravel 11, les dates sont supprimées et toutes les migrations sont regroupées dans seulement deux fichiers.
Modifications des routes
Par défaut, il n’y aura plus que deux fichiers de routes : « console.php » et « web.php ». Les routes API deviendront optionnelles via la commande « php artisan install:api », ce qui permettra d’obtenir un fichier de routes API et Laravel Sanctum. La même chose s’applique à la diffusion des websockets grâce à « php artisan install:broadcasting ».
Suppression du Console Kernel
Le Console Kernel est supprimé et vous pourrez désormais définir directement vos commandes console dans « routes/console.php ».
Support minimum de PHP 8.2
Laravel 11 nécessitera au minimum PHP 8.2. Si vous utilisez une version plus ancienne de PHP, c’est le moment idéal pour effectuer une mise à jour.
En conclusion, les nouvelles fonctionnalités annoncées pour Laravel 11 sont encore à l’état de version bêta et pourraient subir des modifications avant la sortie officielle. Toutefois, elles ont été conçues pour améliorer votre flux de travail et simplifier le développement. Nous vous tiendrons informé des nouvelles annonces concernant Laravel 11, et n’hésitez pas à nous suivre pour les mises à jour à venir !