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'ecrasement 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.
Version | Release | Bug Fixes Until | Security Fixes Until |
---|---|---|---|
6 (LTS) | September 3rd, 2019 | September 7th, 2021 | September 6th, 2022 |
7 | March 3rd, 2020 | October 6th, 2020 | March 3rd, 2021 |
8 | September 8th, 2020 | March 1st, 2022 | September 6th, 2022 |
9 (LTS) | September, 2021 | September, 2023 | September, 2024 |
10 | September, 2022 | March, 2024 | September, 2024 |
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.
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 de null
, 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 deviez 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éthode batch
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 le Release Notes sur la documentation officielle de Laravel , et je vous donne rendez-vous en Septembre pour vous parler de laravel 9.
Top comments (0)