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.