Laravel

Améliorez les performances de votre application Laravel avec les Observers

14 mai 2024

Table des matières:

  1. Introduction
  2. Créer un Observer avec la commande artisan
  3. Comportement des événements de notre Observer
  4. Enregistrer notre Observer
  5. 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:

Mountaga Diao Leye Diop

Coach à Bakeli School of Technology

Bakeli est une école de formation professionnelle dans les nouvelles technologies créer par Volkeno. Elle a formé + de 6000 étudiants et professionnels aux métiers des nouvelles technologies et du digital.

Bakeli

Contacts

S'abonner à la Newsletter

Chargement en cours...

© Copyright 2024, Tous droits réservés.