Laravel - Gestion des événements

Les événements fournissent une implémentation d'observateur simple qui permet à un utilisateur de s'abonner et d'écouter divers événements déclenchés dans l'application Web. Toutes les classes d'événements de Laravel sont stockées dans leapp/Events dossier et les écouteurs sont stockés dans le app/Listeners dossier.

La commande artisan pour générer des événements et des écouteurs dans votre application Web est indiquée ci-dessous -

php artisan event:generate

Cette commande génère les événements et les écouteurs dans les dossiers respectifs comme indiqué ci-dessus.

Les événements et les écouteurs constituent un excellent moyen de découpler une application Web, car un événement peut avoir plusieurs écouteurs indépendants les uns des autres. Le dossier des événements créé par la commande artisan comprend les deux fichiers suivants: event.php et SomeEvent.php. Ils sont montrés ici -

Event.php

<?php
namespace App\Events;
abstract class Event{
   //
}

Comme mentionné ci-dessus, event.php comprend la définition de base de la classe Event et appelle un espace de noms App\Events. Veuillez noter que les événements définis par l'utilisateur ou personnalisés sont créés dans ce fichier.

SomeEvent.php

<?php

namespace App\Events;

use App\Events\Event;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;

class SomeEvent extends Event{
   use SerializesModels;
   /**
      * Create a new event instance.
      *
      * @return void
   */
   
   public function __construct() {
      //
   }
   
   /**
      * Get the channels the event should be broadcast on.
      *
      * @return array
   */
   
   public function broadcastOn() {
      return [];
   }
}

Notez que ce fichier utilise la sérialisation pour la diffusion d'événements dans une application Web et que les paramètres nécessaires sont également initialisés dans ce fichier.

Par exemple, si nous devons initialiser la variable de commande dans le constructeur pour enregistrer un événement, nous pouvons le faire de la manière suivante -

public function __construct(Order $order) {
   $this->order = $order;
}

Les auditeurs

Les auditeurs gèrent toutes les activités mentionnées dans un événement en cours d'enregistrement. La commande artisanaleevent:generate crée tous les listeners dans le app/listenersannuaire. Le dossier Listeners comprend un fichierEventListener.php qui a toutes les méthodes nécessaires pour gérer les écouteurs.

EventListener.php

<?php

namespace App\Listeners;

use App\Events\SomeEvent;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;

class EventListener{
   /**
      * Create the event listener.
      *
      * @return void
   */
   
   public function __construct() {
      //
   }

   /**
      * Handle the event.
      *
      * @param SomeEvent $event
      * @return void
   */
   
   public function handle(SomeEvent $event) {
      //
   }
}

Comme mentionné dans le code, il comprend handlefonction de gestion de divers événements. Nous pouvons créer divers écouteurs indépendants qui ciblent un seul événement.