资讯专栏INFORMATION COLUMN

记录下学习笔记(Laravel 中的事件监听)

LiveVideoStack / 1917人阅读

摘要:什么是事件监听从字面上就可以看出来,无非就是监听一个事件。这时候可能会有人说,那我可以封装起来啊,是的,你可以封装起来,然后就可以用简短的代码来实现。但是实际项目中,会涉及多人开发,这样就不方便了。

1.什么是“事件监听“?

从字面上就可以看出来,无非就是监听一个事件。

2.使用场景

例句一个物流发货的场景:我有个小程序商城,用户下单后需要在后台发货,发完货后我想在微信发送个模块通知提示用户,我想了想用户不登录微信或者把消息提示关闭了,那岂不是不能实时通知用户已经发货了,我决定再加个短信通知用户。有了模块通知,短信通知后我还嫌不够...然后我继续加.... 通常我们会这么写:


这样写不是不可以,但是逻辑功能越来越多,控制器只会变得臃肿起来,后期不便于维护。这时候可能会有人说,那我可以封装起来啊,是的,你可以封装起来,然后就可以用简短的代码来实现。但是实际项目中,会涉及多人开发,这样就不方便了。所以推荐使用laravel自带的“事件监听“...

3.使用”事件监听"优化代码

3.1 打开终端->切换到项目根目录->使用artisan命令创建事件监听文件

php artisan make:event OrderEvent

执行完命令,发现 app/Events 目录下多了个 OrderEvent.php 文件

我们可以打开看看...


简单的修改下构造函数,因为到时候我们可能会 传入 购买商品的 用户

user = $user;
    }

    /**
     * Get the channels the event should broadcast on.
     *
     * @return IlluminateBroadcastingChannel|array
     */
    public function broadcastOn()
    {
        return new PrivateChannel("channel-name");
    }
}

3.2 绑定事件

打开 app/Providers/EventServiceProvider.php 文件,找到 成员属性 listen下:

    protected $listen = [
        Registered::class => [
            SendEmailVerificationNotification::class,
        ],
    ];

把事件关联起来,修改为:

    protected $listen = [
        Registered::class => [
            SendEmailVerificationNotification::class,
        ],
        "AppEventsOrderEvent" => [
            "AppListenerssendModel",
            "AppListenerssendPhone",
        ]
    ];

接着打开终端,执行 artisan 命令 生成 监听文件

php artisan event:generate

然后我们可以在 app/Listeners 文件下发现多了两个文件

打开这两个文件,依次修改为:

sendModel.php:

user; // @todo: 当前用户
        //@todo:发送消息模板逻辑
        dump("发送消息模板成功");
    }
}

sendPhone.php:

user; // @todo: 当前用户
        //@todo:发送短信消息
        dump("发送短信消息成功");
    }
}

3.3 最后我们再打开 OrderController.php 修改为:


3.4 绑定路由

Route::get("/sendGoods","OrderController@sendGoods");

3.5 访问路由结果:

4. 总结

这样是不是简单,便于维护了许多呢... 还不会的小伙伴赶紧去试试吧!如果对你有帮助,请给个赞,谢谢!

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/31453.html

相关文章

  • Laravel学习笔记之Redis保存页面浏览量

    摘要:说明本文主要讲述使用作为缓存加快页面访问速度。何不用来做缓存,等到该达到一定浏览页面后再刷新下,效率也很高。可作缓存系统队列系统。 说明:本文主要讲述使用Redis作为缓存加快页面访问速度。同时,作者会将开发过程中的一些截图和代码黏上去,提高阅读效率。 备注:作者最近在学习github上别人的源码时,发现好多在计算一篇博客页面访问量view_count时都是这么做的:利用Laravel...

    z2xy 评论0 收藏0
  • Laravel学习笔记之Model Observer模型观察者

    摘要:说明本文主要学习下的模型观察者,把一点点经验分享出来希望对别人能有帮助。模型观察者这个功能能做很多事情,比如模型更新时发个通知。总结本篇文章主要学了下的模型观察者,发现这个功能也能使代码结构更清晰,觉得挺好的。 说明:本文主要学习下Laravel的Model Observer模型观察者,把一点点经验分享出来希望对别人能有帮助。同时,作者会将开发过程中的一些截图和代码黏上去,提高阅读效率...

    Crazy_Coder 评论0 收藏0
  • LaravelLaravel 框架关键技术解析·读书笔记(二)

    摘要:框架关键技术解析读书笔记二第五章框架应用程序根目录版本默认的框架应用程序是符合规范的,所以相应的目录结构也是基本固定的,不同的目录加载了功能文件,如果添加了新的目录,需要在文件中添加规范的自动加载部分并执行命令。 Laravel 框架关键技术解析·读书笔记(二) 第五章 框架应用程序根目录(5.1版本) 默认的Laravel框架应用程序是符合PSR规范的,所以相应的目录结构也是基本...

    TIGERB 评论0 收藏0
  • Laravel学习笔记之bootstrap源码解析

    摘要:总结本文主要学习了启动时做的七步准备工作环境检测配置加载日志配置异常处理注册注册启动。 说明:Laravel在把Request通过管道Pipeline送入中间件Middleware和路由Router之前,还做了程序的启动Bootstrap工作,本文主要学习相关源码,看看Laravel启动程序做了哪些具体工作,并将个人的研究心得分享出来,希望对别人有所帮助。Laravel在入口index...

    xiaoxiaozi 评论0 收藏0

发表评论

0条评论

LiveVideoStack

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<