Laravel - Manejo de eventos
Los eventos proporcionan una implementación de observador simple que permite a un usuario suscribirse y escuchar varios eventos activados en la aplicación web. Todas las clases de eventos en Laravel se almacenan en elapp/Events carpeta y los oyentes se almacenan en la app/Listeners carpeta.
El comando artesanal para generar eventos y oyentes en su aplicación web se muestra a continuación:
php artisan event:generate
Este comando genera los eventos y escuchas en las carpetas respectivas como se discutió anteriormente.
Los eventos y los oyentes son una excelente manera de desacoplar una aplicación web, ya que un evento puede tener varios oyentes que son independientes entre sí. La carpeta de eventos creada por el comando artisan incluye los siguientes dos archivos: event.php y SomeEvent.php. Se muestran aquí:
Event.php
<?php
namespace App\Events;
abstract class Event{
//
}
Como se ha mencionado más arriba, event.php incluye la definición básica de clase Event y pide un espacio de nombres App\Events. Tenga en cuenta que los eventos personalizados o definidos por el usuario se crean en este archivo.
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 [];
}
}
Observe que este archivo usa serialización para transmitir eventos en una aplicación web y que los parámetros necesarios también se inicializan en este archivo.
Por ejemplo, si necesitamos inicializar la variable de orden en el constructor para registrar un evento, podemos hacerlo de la siguiente manera:
public function __construct(Order $order) {
$this->order = $order;
}
Oyentes
Los oyentes manejan todas las actividades mencionadas en un evento que se está registrando. El mando artesanalevent:generate crea todo el listeners en el app/listenersdirectorio. La carpeta Listeners incluye un archivoEventListener.php que tiene todos los métodos necesarios para manejar oyentes.
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) {
//
}
}
Como se menciona en el código, incluye handlefunción para gestionar varios eventos. Podemos crear varios oyentes independientes que se dirijan a un solo evento.