L ‘équipe principale de Laravel adhère à la méthodologie de versionnage sémantique, ce qui signifie que les mises à jour majeures du framework sont généralement lancées chaque année au cours du premier trimestre.
Table des matières : [Masquer]
- 1 Les nouvelles mises à jour et fonctionnalités de Laravel 11
- 1.1 Plus de support pour PHP 8.1
- 1.2 Une structure d’application encore plus minimaliste
- 1.3 Laravel 11 Ajoute le Trait Dumpable (dump() et dd() avec des Objets)
- 1.4 Méthode casts() dans les Modèles avec Laravel 11
- 1.5 Suppression des Fichiers de Configuration par Défaut
- 1.6 Noms des Migrations Simplifiés
- 1.7 Suppression du Console Kernel
Les nouvelles mises à jour et fonctionnalités de Laravel 11
Plus de support pour PHP 8.1
Laravel 11 apporte un changement notable en ne prenant plus en charge PHP 8.1. Cette décision repose sur le fait qu’à la sortie de Laravel 11, PHP 8.2 sera entièrement stable, et PHP 8.3 sera également stable.
Pour utiliser Laravel 11, vous devez donc installer PHP 8.2 ou PHP 8.3 et plus.
Une structure d’application encore plus minimaliste
Laravel 11 introduit une structure d’application optimisée pour minimiser la présence de code redondant, au bénéfice des propriétaires d’entreprises et des développeurs. Cela favorise des processus de développement plus efficaces.
Voici à quoi ressemble la nouvelle structure minimaliste :
app
|--- Http
| |--- Controllers
| |--- Controller.php
|--- Models
| |--- User.php
|--- Providers
| |--- AppServiceProvider.php
bootstrap
|--- app.php
|--- cache
| |--- packages.php
| |--- services.php
|--- providers.php
routes
|--- console.php
|--- web.php
Principaux changements :
- Dans l’AuthServiceProvider, le framework découvre automatiquement et supprime les $policies.
- L’inclusion de SendEmailVerificationNotification dans l’EventServiceProvider n’est plus nécessaire, car elle est maintenant automatiquement enregistrée par le base EventServiceProvider. De plus, il convient de noter que
- Laravel active désormais par défaut la découverte automatique des événements (auto-event discovery).
- Le BroadcastServiceProvider n’est plus essentiel, ce qui conduit à sa suppression. En conséquence, le framework ne charge plus automatiquement le fichier routes/channels.php.
- L’amélioration de RedirectIfAuthenticated est facilitée par la fonctionnalité de base du framework.
- Le middleware Authenticate n’appelle plus la méthode redirectTo() pour les routes JSON, éliminant ainsi le besoin de vérifications ternaires redondantes.
- Les middlewares suivants ont été supprimés de la structure de base :
- EncryptCookies, PreventRequestsDuringMaintenance.php, TrimStrings, TrustHosts, TrustProxies, ValidateCsrfToken, et ValidateSignature.
- Dans Laravel 11, cela devient plus simple car la fonction Artisan personnalisée (Custom Artisan) fait désormais partie du framework. Vous n’avez plus besoin d’utiliser manuellement la méthode load() dans la console.
- La suppression du fichier routes/console.php est un changement important. Désormais, il vous suffit de placer vos commandes spéciales directement dans le console kernel.
- Les traits AuthorizesRequests et ValidatesRequests ont été éliminés du contrôleur fondamental.
- Le fichier bootstrap/app.php a été simplifié et ne contient actuellement que trois lignes de code.
- La version 11 de Laravel a supprimé le gestionnaire d’exceptions (exception handler).
Laravel 11 Ajoute le Trait Dumpable (dump() et dd() avec des Objets)
Laravel 11 a ajouté un nouveau Trait Dumpable, qui vous permet de facilement dump vos objets. Cela est particulièrement utile pour déboguer vos requêtes dans l’Eloquent Query Builder et pour déboguer également des bases de données relationnelles.
Voici un exemple simple de code :
<?php
namespace App\ValueObjects;
use Illuminate\Support\Traits\Dumpable;
use Illuminate\Support\Traits\Conditionable;
class Student
{
use Conditionable, Dumpable;
/* ... */
}
$student = new Student;
// Before:
$student->foo()->bar();
// After:
$student->foo()->dd()->bar();
Méthode casts() dans les Modèles avec Laravel 11
Avec Laravel 11, vous pouvez maintenant définir vos conversions (casting) via une méthode casts() dans vos modèles. Cela vous donne la possibilité d’utiliser des méthodes statiques à partir de la classe effectuant la conversion.
Voici un exemple des anciennes et nouvelles méthodes :
namespace App\Models;
use App\Enums\UserRole;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
/* OLD method */
protected $casts = [
'role' => UserRole::class,
];
/* NEW Method */
protected function casts() : array
{
return [
'role' => UserRole::class,
];
}
}
Suppression des Fichiers de Configuration par Défaut
Dans Laravel 11, les fichiers de configuration ont été supprimés par défaut. Cependant, des variables supplémentaires ont été ajoutées au fichier .env pour que vous puissiez effectuer des configurations directement dans ce fichier.
Si vous souhaitez restaurer les fichiers de configuration, vous pouvez utiliser les commandes suivantes :
Publier tous les fichiers de configuration :
php artisan config:publish
Publier un fichier de configuration spécifique :
php artisan config: publish database
Noms des Migrations Simplifiés
Laravel 11 introduit des noms de migrations simplifiés. Auparavant, les noms incluaient la date de création, mais dans la nouvelle version, les noms suivent un format plus clair et cohérent.
Ancien format :
migrations
|---2014_10_12_000000_create_users_table.php
|---2014_10_12_100000_create_password_reset_tokens_table.php
|---2019_08_19_000000_create_failed_jobs_table.php
migrations
|—2014_10_12_000000_create_users_table.php
|—2014_10_12_100000_create_password_reset_tokens_table.php
|—2019_08_19_000000_create_failed_jobs_table.php
Nouveau format :
migrations
|---0001_01_01_000000_create_users_table.php
|---0001_01_01_000001_create_jobs_table.php
Suppression du Console Kernel
Laravel 11 a supprimé le fichier Console Kernel. Désormais, vous n’avez plus besoin d’enregistrer vos commandes de console dans ce fichier. Vous pouvez directement les déclarer avec des commandes simples, comme ci-dessous :
php artisan make:command TestCommand
// Console command [app/Console/Commands/TestCommand.php] created successfully.
routes/console.php
Schedule::command('app:test-command')->hourly();
Laravel 11 apporte encore d’autres changements, mais voici un aperçu des plus importants.