Maison >cadre php >Laravel >Découvrons ensemble les événements et les observateurs de Laravel !

Découvrons ensemble les événements et les observateurs de Laravel !

藏色散人
藏色散人avant
2021-08-13 14:18:122295parcourir

La chronique suivante présentera les événements et les observateurs dans laravel de la colonne tutoriel laravel J'espère qu'elle sera utile aux amis dans le besoin !

1 : Événements et auditeurs

Événement est un terme relativement large, il peut représenter une action entreprise. Ce qui apparaît avec l'événement est l'écouteur, qui est utilisé pour surveiller ce que vous faites et pour effectuer un traitement ultérieur sur votre comportement.
Le système d'événements constitue un excellent moyen de découpler différents aspects de l'application, car un seul événement peut avoir plusieurs auditeurs indépendants les uns des autres. Par exemple, vous souhaiterez peut-être envoyer une notification à l'utilisateur chaque fois qu'une commande est expédiée. Au lieu de coupler le code de traitement des commandes au code de notification, vous pouvez écrire un événement écoutable.

Événements :
Si le framework Laravel souhaite créer des événements, vous pouvez les créer avec la commande suivante :

php artisan make:event 事件名称

Le fichier sera stocké dans le répertoire app/Events.

Listener :

La création d'un auditeur peut être créée à l'aide de la commande suivante :

php artisan make:listener 监听器名称

Inscription :

Une fois l'événement et l'auditeur créés, ils doivent être combinés. Nous pouvons l'enregistrer auprès du fournisseur de services EventServiceProvider. Comme suit :

    protected $listen = [
        事件名称 => [
            监听器名称,
         .
        ],
    ];

Distribution

event(new TestEvent());

Deux : Événements de modèle

Les événements de modèle sont des fonctions supplémentaires ajoutées spécifiquement pour les modèles. Il crée pour nous des événements et des auditeurs correspondants. Lors de l'utilisation d'événements de modèle, nous devons respecter les règles qui nous sont données par le modèle :

  • retrieved : déclenché après l'obtention de l'instance du modèle
  • creating : déclenché avant l'insertion dans la base de données
  • created : déclenché après l'insertion dans la base de données
  • mise à jour : mise à jour vers déclenchée avant la base de données
  • mise à jour : déclenchée après la mise à jour de la base de données
  • sauvegarde : déclenchée avant l'enregistrement dans la base de données (avant l'insertion/la mise à jour, l'insertion et la mise à jour seront déclenchées)
  • saved : déclenchée après enregistrement dans la base de données (après l'insertion/la mise à jour, quel que soit le déclenchement de l'insertion ou de la mise à jour)
  • deleting : déclenché avant la suppression des enregistrements de la base de données
  • deleted : déclenché après la suppression des enregistrements de la base de données
  • restauration : déclenché avant la restauration du logiciel- enregistrements supprimés
  • restaurés : déclenché après la restauration des enregistrements supprimés de manière logicielle

Liaison obligatoire

protected $dispatchesEvents = [
        'saving' => \App\Events\TestEvent::class,
//        'updated' => \App\Events\TestEvent::class,
];

3 au niveau du modèle : l'événement observateur

doit être associé à l'auditeur. Lorsqu'il y a plus d'auditeurs, nous devons le faire. les enregistrer et les mettre en œuvre, ce qui sera plus gênant, nous pouvons envisager d'utiliser des observateurs . Si vous écoutez plusieurs événements sur un modèle, vous pouvez utiliser des observateurs pour organiser ces auditeurs dans une classe distincte.

Utilisation des observateurs :

Les observateurs peuvent être créés à l'aide de la commande suivante :

php artisan make:observer

Si vous souhaitez vous associer directement au modèle, vous pouvez également ajouter directement des paramètres à associer au modèle :

php artisan make:observer UserObserver --model=User

Inscription de l'observateur :
Inscrivez-vous

User::observe(UserObserver::class);

dans le prestataire ou inscrivez-vous

public static function booted()
{
     self::observe(UserObserver::class);
}

dans le modèle

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer