第一种创建方式:
这种方式较为传统,按流程一步步创建,如果后续有新的监听,需要手动创建并进行关联
第一步:创建一个事件,如用户登录
php artisan make:event UserLogin
第二步:为事件创建监听,如给管理员发送邮件(一个事件可以有多个监听)
php artisan make:listener EmailAdminUserLogin --event=UserLogin
第三步:系统中注册事件和监听的关系 在 app/Providers/EventServiceProvider.php 文件中 protected $listen 里进行注册,如
protected $listen = [
UserLogin::class => [
EmailAdminUserLogin::class,
],
];
第四步:触发 在需要触发的地方使用
event(new UserLogin());
第二种创建方式(推荐):
这种方式可一步把事件和监听创建完毕,前提是事件的监听已经提前规划好
第一步:书写事件和监听关联关系 同一个事件的监听尽量放入同一个文件夹
protected $listen = [
'App\Events\UserLogin' => [
'App\Listeners\UserLogin\EmailAdminUserLogin',
'App\Listeners\UserLogin\AddLoginCounterUserLogin',
'App\Listeners\UserLogin\ChangStatusUserLogin',
],
];
第二步:运行一键创建命令
php artisan event:generate
其他: 监听的执行顺序是按数组的排序; 存在多个监听时如果其中一个监听运行失败,想停止接下来监听的执行,可以直接 return false
|