Laravel 8 编写事件订阅者
事件订阅者是可以在自身内部订阅多个事件的类,即能够在单个类中定义多个事件处理器。订阅者应该定义一个 subscribe
方法,这个方法接收一个事件分发器实例。你可以调用给定事件分发器上的 listen
方法来注册事件监听器:
<?php
namespace App\Listeners;
class UserEventSubscriber
{
/**
* 处理用户登录事件
*/
public function handleUserLogin($event) {}
/**
* 处理用户注销事件
*/
public function handleUserLogout($event) {}
/**
* 为事件订阅者注册监听器
*
* @param \Illuminate\Events\Dispatcher $events
* @return void
*/
public function subscribe($events)
{
$events->listen(
'Illuminate\Auth\Events\Login',
[UserEventSubscriber::class, 'handleUserLogin']
);
$events->listen(
'Illuminate\Auth\Events\Logout',
[UserEventSubscriber::class, 'handleUserLogout']
);
}
}
或者,你的订阅者的 subscribe
方法可以将事件数组返回到处理程序映射。在这种情况下,事件监听器映射将自动为你注册:
use Illuminate\Auth\Events\Login;
use Illuminate\Auth\Events\Logout;
/**
* Register the listeners for the subscriber.
*
* @return array
*/
public function subscribe()
{
return [
Login::class => [UserEventSubscriber::class, 'handleUserLogin'],
Logout::class => [UserEventSubscriber::class, 'handleUserLogout'],
];
}