Améliorez les performances de votre application Laravel avec les Observers
14 mai 2024
Table des matières:
- Introduction
- Créer un Observer avec la commande artisan
- Comportement des événements de notre Observer
- Enregistrer notre Observer
- Conclusion
Lors du développement d’un projet Web, vous aimerez peut-être que quelque chose se produise lorsqu’une table de votre base de données est modifiée. Par exemple, vous souhaiterez peut-être envoyer une notification de confirmation à un utilisateur chaque fois qu’un enregistrement est créé. Ou vous souhaiterez peut-être créer un enregistrement dans une table de journal chaque fois qu’un enregistrement est mis à jour ou supprimé. Ou vous souhaiterez peut-être nettoyer vos données avant qu’elles ne soient envoyées à la base de données et supprimer toutes les balises HTML ou script.
Bien qu’il soit possible de faire cela dans vos contrôleurs, il est probable que vous manipuliez une table à plusieurs endroits, vous devrez donc conserver ce code à plusieurs endroits. Un moyen plus efficace de procéder consiste à placer le code dans les événements intégrés de Laravel.
Introduction
Laravel Observer
est un design pattern qui vous permet d’écouter les événements de votre application et de prendre des actions en fonction de ces événements.
Il vous permet de découpler différentes parties de votre application en demandant à certaines classes d’observer les événements et d’y réagir sans avoir besoin de connaître les spécificités de la classe qui émet l’événement.
Créer un Observer avec la commande artisan
Pour créer un Observer
, on peut utitliser la commande artisan ci-dessous:
php artisan make:observer UserObserver -model=User
La commande artisan ci-dessus crée un Observer
dans le répertoire app/Observers
et le lie à notre Model User
.
Vous trouverez ci-dessous le code du UserObserver
nouvellement créé
<?php namespace App\Observers; use App\Models\User; class UserObserver{ /** * Handle the User "created" event. * * @param \App\Models\User $user * @return void */ public function created(User $user) { // } /** * Handle the User "updated" event. * * @param \App\Models\User $user * @return void */ public function updated(User $user) { // } /** * Handle the User "deleted" event. * * @param \App\Models\User $user * @return void */ public function deleted(User $user) { // } /** * Handle the User "restored" event. * * @param \App\Models\User $user * @return void */ public function restored(User $user) { // } /** * Handle the User "forceDeleted" event. * * @param \App\Models\User $user * @return void */ public function forceDeleted(User $user) { // }}
Un Observer
est créé ici avec 5 fonctions pre-définies et d’autres seront mentionnées en fonction des actions prises en charge par le comportement de notre Observer
.
Comportement des événements de notre Observer
Laravel comprend un certain nombre d’événements déclenchés pendant la durée de vie d’un modèle. Ces événements correspondent à différentes actions effectuées sur une table de base de données. Ces événements incluent la création d’un enregistrement, la mise à jour d’un enregistrement et la suppression.
Il y a en fait deux événements qui se déclenchent pour chacun de ces événements; un événement se produit avant que l’action ne se produise et l’autre se produit après qu’elle s’est produite. Par exemple, l’événement creating
se déclenche avant la création de l’enregistrement dans la base de données, tandis que l’événement created
se déclenche une fois l’enregistrement créé. La liste complète ressemble à ceci :
- Creating/Created
- Updating/Updated
- Saving/Saved
- Deleting/Deleted
- ForceDeleting/ForceDeleted
- Restoring/Restored
Voici un exemple de la façon dont on peut utiliser un Observer
pour enregistrer des informations sur la création d’un nouvel utilisateur :
// app/Observers/UserObserver.php<?php namespace App\Observers; use App\Models\User; class UserObserver{ function created(User $user) { $user->referralCode()->create(); }}
Dans cet exemple, la méthode created
de la classe UserObserver
est déclenchée lors de la création d’un nouvel utilisateur, elle déclenchera alors la génération d’un lien d’affiliation pour cet utilisateur.
Enregistrer notre Observer
Une fois un Observer
créé, vous devrez l’enregistrer dans la méthode de boot
de la classe App\Providers\EventServiceProvider
pour commencer à écouter les événements.
use App\Models\User;use App\Observers\UserObserver; /** * Register any events for your application. */ public function boot(): void { ReferralCode::observe(ReferralCodeObserver::class); User::observe(UserObserver::class); }
Conclusion
En conclusion, les Observers
offrent un moyen puissant d’améliorer les performances de votre application Laravel en déchargeant des tâches de traitement hors du chemin principal de l’exécution. En utilisant les Observers de manière appropriée, vous pouvez rationaliser votre code, améliorer la maintenabilité de votre application et optimiser ses performances globales.
Partager cet article:
Coach à Bakeli School of Technology