Aller au contenu
Enter

Quoi de neuf dans Laravel 8 ?

Par :
Antonin
-
Directeur des opérations / Co-fondateur
-
Publié le :
8.4.21
Le 8 septembre 2020, la version 8 de Laravel est sortie, qui dispose de nouvelles fonctionnalités telles que le répertoire des modèles, l’écrasement des migrations (Squashing), les jobs batch, des améliorations en mode maintenance, des composants dynamiques dans les templates Blade, améliorations des écouteurs d’événements, etc.

Laravel Releases Calendar

Dans cet article, je vais vous parler de tous les détails de certaines de ces nouvelles fonctionnalités.

1. Laravel Jetstream

Il s’agit d’un package de scaffolding qui vous permet de créer rapidement les fonctionnalités de connexion, d’enregistrement, de vérification d’e-mail, d’authentification à 2 étapes, de gérer les sessions, le support API via Laravel Sactum et éventuellement la gestion des équipes.
Laravel Jetstream remplace et améliore le package de scaffolding que Laravel avait dans les versions précédentes avec l’interface utilisateur, qui a été créée avec Tailwind CSS. Laravel Jetstream est venue avec deux choix de stacks frontend Livewire + Blade ou Inertia.js + Vue.js

Comment utiliser Laravel Jetstream ?

Vous pouvez créer une nouvelle application avec Jetstream à l’aide du programme d’installation de Laravel. Assurez-vous que le programme d’installation de Laravel est mis à jour vers la v4.0, puis exécutez ce qui suit:

laravel new my-project -jet

Choisissez le stack que vous souhaitez utiliser: Livewire ou Inertia.

Ensuite, exécutez vos migrations de base de données avec:

php artisan migrate

Finalement, consultez votre application sur http://localhost:8000 en exécutant:

php artisan serve

2. Un répertoire pour les Models

À la demande de la communauté, le squelette d’un projet Laravel comprend désormais un répertoire pour les modèles, toutes les commandes pertinentes ont été mises à jour pour supposer que les modèles existent dans le répertoire, s’il existe. Si le répertoire des modèles n’existe pas, Laravel supposera que les modèles sont placés directement dans le répertoire de l’application app.

Nouveau répertoire Models

3. Les classes Model Factories

Les Model factories ont été complètement réécrite comme des classes au lieu des fonctions, les model factories ont été améliorés pour soutenir les relations de premier-ordre (first-class relationship), par exemple UserFactory inclus dans Laravel est écrit comme suit :

Grâce à la nouvelle fonctionnalité HasFactory disponible dans les modèles générés, les model factories peuvent être utilisées de la manière suivante:

User::factory()->count(20)->create();

4. Migration écrasée

Laravel 8 introduit une autre fonctionnalité intéressante: l’écrasement des migrations! Vous n’avez plus à manipuler beaucoup de fichiers de migration lorsque vous ouvrez votre dossier de migrations! Grâce à l’écrasement de la migration, vous pouvez désormais condenser vos fichiers de migration en un seul fichier SQL avec les commandes suivantes:

# condensation de migration
php artisan schema:dump
# Vider le schéma de base de données actuel et élaguer toutes
# les migrations existantes
php artisan schema:dump --prune

Après avoir exécuté la première commande ci-dessus, Laravel 8 crée un fichier de schéma dans le répertoire de database/schema et lorsque vous essayez de migrer votre base de données et qu’aucune autre migration n’a été exécutée, Laravel exécutera d’abord le SQL du fichier de schéma, ensuite il exécutera les migrations restantes qui ne faisaient pas partie de la condensation…

5. Limitation de débit (Improved Rate Limiting)

Laravel 8 apporte des améliorations à la fonctionnalité de limitation de débit (rate limiting) existante tout en prenant en charge la rétrocompatibilité avec le middleware Throttle et en offrant beaucoup plus de flexibilité.

Vous pouvez définir vos limiteurs de débit dans le fichier app/Providers/RouteServiceProvider.php comme suit:

Vous pouvez ensuite appliquer cette configuration prédéfini aux routes Laravel avec le Throttling Middleware

6. Les mises à jour de Routing Namespace

Dans les version précédentes de Laravel, la propriété $namespace de la classe RouteServiceProvider contenait la valeur App\Http\Controllers. Cette propriété s’ajoutait automatiquement en tant que préfixe namespace dans les définitions des contrôleurs dans les routes.

Laravel 7:

Route::get('/users', 'UserController@index');

Dans ce cas Laravel 7 considérera que la classe UserController appartient au namespace défini par la propriété $namespace de RouteServiceProvider qui est par défaut: App\Http\Controllers.

Dans Laravel 8, cette propriété a la valeur par défaut denull, cela signifie que Laravel n’effectuera aucun préfixage automatique du namespace des contrôleurs. Par conséquent, dans les nouvelles applications Laravel 8, les définitions de namespace du contrôleur doivent être définies à l’aide de la syntaxe callable de PHP pour spécifier le namespace complet:

Laravel 8:

use App\Http\Controllers\UserController;
Route::get('/users', [UserController::class, 'index']);

7. Des Helpers pour le Time Testing

Lors des tests dans Laravel, vous devez parfois modifier l’heure obtenue avec la méthode now()ou effectuer des tests dans le futur ou dans le passé. Laravel 8 inclut désormais des Helpers qui permettent à votre application de voyager dans le temps et de manipuler l’heure actuelle.

8. Les améliorations du Mode Maintenance

Dans les versions précédentes de Laravel, vous deviez spécifier les adresses IP qui sont autorisées à accéder à l’application quand elle est en mode maintenance avec la commande:

php artisan down --allow=192.168.1.1

Laravel 8 apporte quelques améliorations à cette fonctionnalité, vous n’avez plus besoin d’autoriser seulement certaines adresses IP. Au lieu de ça, vous pouvez utiliser l’option secret de la commande php artisan down pour créer un access token pour l’application au mode maintenance:

php artisan down --secret='Y7oXZapnys25F9qCdr18h3uKjsT8U9Ow'

9. Distribution des Jobs par lots (Job batching)

Laravel 8 est également livrée avec une fonctionnalité qui permet de distribuer un groupe de jobs à exécuter en parallèle.

Pour utiliser la nouvelle fonctionnalité, définissez d’abord un job comme vous le faisiez avant. L’exemple ci-dessous a été simplifié pour montrer l’utilisation du nouveau trait Batchable :

Maintenant vous pouvez distribuer votre job en utilisant la méthodebatch de la facade Bus. Et pour surveiller la progression des jobs, vous pouvez utiliser les méthodes then, catch et finally pour définir des callbacks de completion des jobs.

Conclusion

Dans cet article, nous avons cité les principales nouvelles fonctionnalités de Laravel 8, pour en savoir plus vous pouvez consulter les Release Notes sur la documentation officielle de Laravel, et je vous donne rendez-vous en Septembre pour vous parler de Laravel 9.

À lire aussi

Veille digitale, regard d’experts et retours d’expérience