Laravel 事件&监听器的使用

https://learnku.com/docs/laravel/5.8/events/3917

当用户注册时自动向用户发送邮件\发送短信\发送通知等

  • 一个事件可以包含多个监听器,用户注册的时候是一个事件,那么发送邮件\发送短信\发送通知应该分别有对应的监听器.
    -首先打开EventServiceProvider文件并编辑以下代码:
protected $listen = [
        Registered::class => [
            SendEmailVerificationNotification::class,
        ],
        'App\Events\Register'=>[
            'App\Listeners\SendMailTo',
            'App\Listeners\CreateLog',
        ]
    ];

绿色的部分便是我新注册的事件类,包含了两个监听器SendMailToCreateLog
接下来运行命令> php artisan event:generate
它将自动为我们创建事件和监听器所需要的文件
App\Events\Register(事件文件)
App\Listeners\SendMailTo(监听文件)
App\Listeners\CreateLog(监听文件)
接下来编辑Register.php
改造一下,让它在被实例化的时候传入我们需要的参数这里是$text

    public $text;
    public function __construct($text)
    {
        $this->text=$text;
    }

接下来编辑文件CreateLog.php

public function handle(Register $event)
    {
        Log::error($event->text);
    }

接下来编辑文件SendMailTo.php

public function handle(Register $event)
    {
        Log::alert($event->text);
    }

为了区分两个监听不同的工作,CreateLog向日志写入了一条错误消息.而SendMailTo写入了一个警告消息;
接下来就是使用事件的时候了,在你的控制器中写入如下代码启用事件

public function event()
    {
        $text='testName';
        event(new Register($text));
    }

定义好路由并且访问一下,然后打开日志查看监听器执行的结果吧~

[2019-07-23 10:59:40] local.ALERT: testName  
[2019-07-23 10:59:40] local.ERROR: testName 

一条警告消息和一条错误消息已经创建完成了.

你可能感兴趣的:(Laravel 事件&监听器的使用)