Laravel - Ereignisbehandlung
Ereignisse bieten eine einfache Beobachterimplementierung, mit der ein Benutzer verschiedene in der Webanwendung ausgelöste Ereignisse abonnieren und abhören kann. Alle Ereignisklassen in Laravel werden in der gespeichertapp/Events Ordner und die Listener werden im gespeichert app/Listeners Mappe.
Der handwerkliche Befehl zum Generieren von Ereignissen und Listenern in Ihrer Webanwendung wird unten angezeigt:
php artisan event:generate
Dieser Befehl generiert die Ereignisse und Listener für die jeweiligen Ordner, wie oben erläutert.
Ereignisse und Listener bieten eine hervorragende Möglichkeit, eine Webanwendung zu entkoppeln, da ein Ereignis mehrere voneinander unabhängige Listener haben kann. Der vom Befehl artisan erstellte Ereignisordner enthält die folgenden zwei Dateien: event.php und SomeEvent.php. Sie werden hier gezeigt -
Event.php
<?php
namespace App\Events;
abstract class Event{
//
}
Wie oben erwähnt, event.php enthält die grundlegende Definition der Klasse Event und fordert Namespace App\Events. Bitte beachten Sie, dass die benutzerdefinierten oder benutzerdefinierten Ereignisse in dieser Datei erstellt werden.
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 [];
}
}
Beachten Sie, dass diese Datei die Serialisierung zum Senden von Ereignissen in einer Webanwendung verwendet und dass die erforderlichen Parameter auch in dieser Datei initialisiert werden.
Wenn wir beispielsweise die Ordnungsvariable im Konstruktor für die Registrierung eines Ereignisses initialisieren müssen, können wir dies folgendermaßen tun:
public function __construct(Order $order) {
$this->order = $order;
}
Zuhörer
Zuhörer übernehmen alle Aktivitäten, die in einem Ereignis erwähnt werden, das registriert wird. Das Handwerkerkommandoevent:generate schafft alle listeners in dem app/listenersVerzeichnis. Der Listeners-Ordner enthält eine DateiEventListener.php Hier finden Sie alle Methoden, die für den Umgang mit Listenern erforderlich sind.
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) {
//
}
}
Wie im Code erwähnt, enthält es handleFunktion zum Verwalten verschiedener Ereignisse. Wir können verschiedene unabhängige Listener erstellen, die auf ein einzelnes Ereignis abzielen.