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 相关文章推荐
深入解析php之sphinx
May 15 PHP
php中利用explode函数分割字符串到数组
Feb 08 PHP
PHP实现的简易版图片相似度比较
Jan 07 PHP
PHP如何实现Unicode和Utf-8编码相互转换
Jul 29 PHP
PHP安装threads多线程扩展基础教程
Nov 17 PHP
thinkphp3.x中cookie方法的用法分析
May 19 PHP
php处理复杂xml数据示例
Jul 11 PHP
PHP 以POST方式提交XML、获取XML,解析XML详解及实例
Oct 26 PHP
基于thinkPHP类的插入数据库操作功能示例
Jan 06 PHP
Yii输入正确验证码却验证失败的解决方法
Jun 06 PHP
PHP实现的简单对称加密与解密方法实例小结
Aug 28 PHP
PHP的mysqli_rollback()函数讲解
Jan 23 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
PHP5中的this,self和parent关键字详解教程
2007/03/19 PHP
php项目打包方法
2008/02/18 PHP
PHP实现通过get方式识别用户发送邮件的方法
2015/07/16 PHP
分享PHP守护进程类
2015/12/30 PHP
基于Swoole实现PHP与websocket聊天室
2016/08/03 PHP
Yii2中多表关联查询hasOne hasMany的方法
2017/02/15 PHP
深入解析Laravel5.5中的包自动发现Package Auto Discovery
2017/09/13 PHP
PHP PDOStatement::closeCursor讲解
2019/01/30 PHP
PHP时间相关常用函数用法示例
2020/06/03 PHP
jquery 插件学习(五)
2012/08/06 Javascript
详谈JavaScript 匿名函数及闭包
2014/11/14 Javascript
node.js+Ajax实现获取HTTP服务器返回数据
2014/11/26 Javascript
举例详解AngularJS中ngShow和ngHide的使用方法
2015/06/19 Javascript
javascript基于prototype实现类似OOP继承的方法
2015/12/16 Javascript
VueJs路由跳转——vue-router的使用详解
2017/01/10 Javascript
基于Node.js的WebSocket通信实现
2017/03/11 Javascript
Node.js编写CLI的实例详解
2017/05/17 Javascript
基于Swiper实现移动端页面图片轮播效果
2017/12/28 Javascript
three.js 实现露珠滴落动画效果的示例代码
2021/03/01 Javascript
Python实现JSON反序列化类对象的示例
2018/01/31 Python
python适合人工智能的理由和优势
2019/06/28 Python
Python 发送邮件方法总结
2020/08/10 Python
python 基于UDP协议套接字通信的实现
2021/01/22 Python
利用CSS3实现炫酷的飞机起飞动画
2016/09/17 HTML / CSS
Clarks其乐鞋荷兰官网:Clarks荷兰
2019/07/05 全球购物
恶搞卫生巾广告词
2014/03/18 职场文书
企业安全生产演讲稿
2014/05/09 职场文书
公司投资建议书
2014/05/16 职场文书
地下停车场租赁协议范本
2014/10/07 职场文书
市级三好学生评语
2014/12/29 职场文书
2015初中团支部工作总结
2015/07/21 职场文书
辞职离别感言
2015/08/04 职场文书
2016国培学习心得体会
2016/01/08 职场文书
导游词之张家口
2019/12/13 职场文书
VS2019连接MySQL数据库的过程及常见问题总结
2021/11/27 MySQL
Java Spring Boot 正确读取配置文件中的属性的值
2022/04/20 Java/Android