Laravel - Gestione degli eventi

Gli eventi forniscono una semplice implementazione dell'osservatore che consente a un utente di iscriversi e ascoltare vari eventi attivati ​​nell'applicazione web. Tutte le classi di eventi in Laravel sono archiviate nel fileapp/Events cartella e i listener vengono memorizzati nel file app/Listeners cartella.

Di seguito è mostrato il comando artisan per la generazione di eventi e listener nella tua applicazione web:

php artisan event:generate

Questo comando genera gli eventi e gli ascoltatori nelle rispettive cartelle come discusso sopra.

Gli eventi e gli ascoltatori sono un ottimo modo per disaccoppiare un'applicazione Web, poiché un evento può avere più ascoltatori indipendenti l'uno dall'altro. La cartella degli eventi creata dal comando artisan include i seguenti due file: event.php e SomeEvent.php. Sono mostrati qui -

Event.php

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

Come menzionato sopra, event.php include la definizione di base di classe Event e chiede lo spazio dei nomi App\Events. Si noti che gli eventi definiti dall'utente o personalizzati vengono creati in questo file.

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 [];
   }
}

Si noti che questo file utilizza la serializzazione per la trasmissione di eventi in un'applicazione Web e che anche i parametri necessari sono inizializzati in questo file.

Ad esempio, se abbiamo bisogno di inizializzare la variabile d'ordine nel costruttore per registrare un evento, possiamo farlo nel modo seguente:

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

Ascoltatori

Gli ascoltatori gestiscono tutte le attività menzionate in un evento che viene registrato. Il comando artigianoevent:generate crea tutti i file listeners nel app/listenersdirectory. La cartella Listeners include un fileEventListener.php che ha tutti i metodi necessari per gestire gli ascoltatori.

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) {
      //
   }
}

Come menzionato nel codice, include handlefunzione per la gestione di vari eventi. Possiamo creare diversi ascoltatori indipendenti che hanno come target un singolo evento.