事件订阅者
在 Laravel 的事件系统 中说到,一个事件可以对应多个监听器,但一个监听器只监听一个事件。
那么如果想在一个类中订阅多个事件,例如在订单发货、签收、退货事件发生时,都需要进行“发短信操作”,该如何处理呢,这时候可以使用事件订阅者。
事件订阅者可以在类内部订阅多个事件,即在单个类中定义多个事件处理器。
编写事件订阅者
<?php
namespace App\Listeners;
use Illuminate\Auth\Events\Login;
use Illuminate\Auth\Events\Logout;
class UserEventSubscriber
{
/**
* 处理用户登录事件
*/
public function handleUserLogin($event) {}
/**
* 处理用户注销事件
*/
public function handleUserLogout($event) {}
/**
* 为事件订阅者注册监听器
*
* @return array
*/
public function subscribe()
{
return [
Login::class => [UserEventSubscriber::class, 'handleUserLogin'],
Logout::class => [UserEventSubscriber::class, 'handleUserLogout'],
];
}
}
注册事件订阅者
<?php
namespace App\Providers;
use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;
class EventServiceProvider extends ServiceProvider
{
/**
* 应用的事件监听器映射
*/
protected $listen = [
//
];
/**
* 被注册的订阅者类
*/
protected $subscribe = [
'App\Listeners\UserEventSubscriber',
];
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。