美文网首页
Laravel 事件&监听器的使用

Laravel 事件&监听器的使用

作者: 会飞的兔子zy | 来源:发表于2019-07-23 11:38 被阅读0次

    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 事件&监听器的使用

          本文链接:https://www.haomeiwen.com/subject/odcolctx.html