Laravel事件监听器用法实例分析


Posted in PHP onMarch 12, 2019

本文实例讲述了Laravel事件监听器用法。分享给大家供大家参考,具体如下:

这里讲述最佳实践方案,分以下步骤:

第一步:注册事件和监听器。

在EventServiceProvider的linsten数组里面加上事件和监听器,键名是事件,键值里面的数组是一个或者多个监听器,意思是当某一个事件发生的时候,传送给数组里面的那些个监听器,执行一些列操作。

这里,我监听发送短信验证码事件,一旦有发送验证码动作,我就要到验证码发送记录表里面添加一条数据,用以记录。

D:\phpStudy\WWW\BCCKidV1.0\app\Providers\EventServiceProvider.php

protected $listen = [
  'App\Events\Event' => [
    'App\Listeners\EventListener',
  ],
  'App\Events\SendPhoneCodeEvent' => [
    'App\Listeners\SendPhoneCodeListener',
  ],
];

第二步:生成监听和事件文件。

php artisan event:generate

就会自动生成如下两个文件:

D:\phpStudy\WWW\BCCKidV1.0\app\Events\SendPhoneCodeEvent.php
D:\phpStudy\WWW\BCCKidV1.0\app\Listeners\SendPhoneCodeListener.php

第三步:打开App\Events\SendPhoneCodeEvent,

加上一个属性,这个属性是一个数组,里面会有验证码内容,接收验证码的手机号码等信息。

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

第四步:设置监听器里面需要执行的操作,这里我就直接插入一条记录就行了。

public function handle(SendPhoneCodeEvent $event)
{
  AuthCode::create($event->data);
}

第五步:触发事件。

use App\Events\SendPhoneCodeEvent;
...
$data = [
  'findBy' => $findBy,
  'auth_code' => $code,
  'customer_id' => $customer_id,
  'expire_time' => date('Y-m-d H:i:s', time() + 300),
];
#触发事件
event(new SendPhoneCodeEvent($data));

自己的想法:

1、事件的作用其实可以被一个方法代替,你在需要调用的地方引用一下,然后执行这个方法就行了。但是事件有个好处,他默认使用队列来处理,可以用来操作那些比较耗时的操作,例如发送邮件,发送验证码等等。

2、代码比较整洁,看起来会舒服一点。

希望本文所述对大家基于Laravel框架的PHP程序设计有所帮助。

PHP 相关文章推荐
main.php
Dec 09 PHP
PHP学习之输出字符串(echo,print,printf,print_r和var_dump)
Apr 17 PHP
PHP获取文件绝对路径的代码(上一级目录)
May 29 PHP
php简单开启gzip压缩方法(zlib.output_compression)
Apr 13 PHP
PHP字符串的连接的简单实例
Dec 30 PHP
PHP中加密解密函数与DES加密解密实例
Oct 17 PHP
php跨站攻击实例分析
Oct 28 PHP
Apache服务器下防止图片盗链的办法
Jul 06 PHP
Thinkphp+smarty+uploadify实现无刷新上传
Jul 30 PHP
PHP时间类完整实例(非常实用)
Dec 25 PHP
php编程中echo用逗号和用点号连接的区别
Mar 26 PHP
PHP处理CSV表格文件的常用操作方法总结
Jul 01 PHP
PHP添加PNG图片背景透明水印操作类定义与用法示例
Mar 12 #PHP
PHP DB 数据库连接类定义与用法示例
Mar 11 #PHP
PHP实现的杨辉三角求解算法分析
Mar 11 #PHP
PHP实现的只保留字符串首尾字符功能示例【隐藏部分字符串】
Mar 11 #PHP
ThinkPHP5.0框架验证码功能实现方法【基于第三方扩展包】
Mar 11 #PHP
PHP join()函数用法与实例讲解
Mar 11 #PHP
PHP lcfirst()函数定义与用法
Mar 08 #PHP
You might like
php实现修改新闻时删除图片的方法
2015/05/12 PHP
thinkphp如何获取客户端IP
2015/11/03 PHP
php fread读取文件注意事项
2016/09/24 PHP
PHP读取文件或采集时解决中文乱码
2021/03/09 PHP
JS判断是否为数字,是否为整数,是否为浮点数的代码
2010/04/24 Javascript
jquery Tab效果和动态加载的简单实例
2013/12/11 Javascript
ExtJS4如何给同一个formpanel不同的url
2014/05/02 Javascript
Js实现网页键盘控制翻页的方法
2014/10/30 Javascript
浅谈JS闭包中的循环绑定处理程序
2014/11/09 Javascript
node.js中的path.basename方法使用说明
2014/12/09 Javascript
JS 组件系列之 bootstrap treegrid 组件封装过程
2017/04/28 Javascript
js使用highlight.js高亮你的代码
2017/08/18 Javascript
vue中路由参数传递可能会遇到的坑
2017/12/07 Javascript
vue 2.x 中axios 封装的get 和post方法
2018/02/28 Javascript
node实现简单的增删改查接口实例代码
2019/08/22 Javascript
vue+ts下对axios的封装实现
2020/02/18 Javascript
了不起的11个JavaScript代码重构最佳实践小结
2021/01/11 Javascript
[31:33]2014 DOTA2国际邀请赛中国区预选赛 TongFu VS DT 第一场
2014/05/23 DOTA
Python实现TCP协议下的端口映射功能的脚本程序示例
2016/06/14 Python
教你用python3根据关键词爬取百度百科的内容
2016/08/18 Python
浅谈python正则的常用方法 覆盖范围70%以上
2018/03/14 Python
Python笔记之工厂模式
2019/11/20 Python
python实现飞行棋游戏
2020/02/05 Python
tensorflow 实现自定义梯度反向传播代码
2020/02/10 Python
使用Python构造hive insert语句说明
2020/06/06 Python
Python调用shell cmd方法代码示例解析
2020/06/18 Python
如何基于Python代码实现高精度免费OCR工具
2020/06/18 Python
浅谈OpenCV中的新函数connectedComponentsWithStats用法
2020/07/05 Python
Python实现对word文档添加密码去除密码的示例代码
2020/12/29 Python
CSS3 渐变(Gradients)之CSS3 径向渐变
2016/07/08 HTML / CSS
日本著名的服饰鞋帽综合类购物网站:MAGASEEK
2019/01/09 全球购物
27个经典Linux面试题及答案,你知道几个?
2013/01/10 面试题
研究生简历自我评价范文
2014/09/13 职场文书
打架检讨书范文
2015/01/27 职场文书
立春观后感
2015/06/18 职场文书
2016年八一建军节活动总结
2016/04/05 职场文书