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