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 高手之路(三)
Oct 09 PHP
ThinkPHP采用模块和操作分析
Apr 18 PHP
PHP sprintf() 函数的应用(定义和用法)
Jun 29 PHP
PHP实现提取一个图像文件并在浏览器上显示的代码
Oct 06 PHP
PHP数据类型之整数类型、浮点数的介绍
Apr 28 PHP
基于PHP导出Excel的小经验 完美解决乱码问题
Jun 10 PHP
zend framework框架中url大小写问题解决方法
Aug 19 PHP
smarty半小时快速上手入门教程
Oct 27 PHP
php获取指定范围内最接近数的方法
Jun 02 PHP
PHP实现GIF图片验证码
Nov 04 PHP
PHP针对字符串开头和结尾的判断方法
Jul 11 PHP
详解Go与PHP的语法对比
May 29 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获取表单textarea数据中的换行问题
2010/09/10 PHP
两种php实现图片上传的方法
2016/01/22 PHP
php语言注释,单行注释和多行注释
2018/01/21 PHP
javascript 读取XML数据,在页面中展现、编辑、保存的实现
2009/10/27 Javascript
JavaScript怎么判断图片是否加载完成以便获取其尺寸
2014/05/08 Javascript
JQuery判断radio是否选中并获取选中值的示例代码
2014/10/17 Javascript
jQuery编程中的一些核心方法简介
2015/08/14 Javascript
js中json处理总结之JSON.parse
2016/10/14 Javascript
浅析JavaScript的几种Math函数,random(),ceil(),round(),floor()
2016/12/22 Javascript
Javascript同时声明一连串(多个)变量的方法
2017/01/23 Javascript
Web前端框架Angular4.0.0 正式版发布
2017/03/28 Javascript
AngularJS中的拦截器实例详解
2017/04/07 Javascript
使用 Node.js 对文本内容分词和关键词抽取
2017/05/27 Javascript
详解React Native 采用Fetch方式发送跨域POST请求
2017/11/15 Javascript
jQuery仿移动端支付宝键盘的实现代码
2018/08/15 jQuery
Angular6 Filter实现页面搜索的示例代码
2018/12/02 Javascript
js取小数点后两位四种方法
2019/01/18 Javascript
[02:29]DOTA2英雄基础教程 陈
2013/12/17 DOTA
[02:41]2015国际邀请赛中国区预选赛观战指南
2015/05/20 DOTA
[47:12]TFT vs Secret Supermajor小组赛C组 BO3 第三场 6.3
2018/06/04 DOTA
对python3中pathlib库的Path类的使用详解
2018/10/14 Python
用Pytorch训练CNN(数据集MNIST,使用GPU的方法)
2019/08/19 Python
Python Lambda函数使用总结详解
2019/12/11 Python
Python json转字典字符方法实例解析
2020/04/13 Python
Python plt 利用subplot 实现在一张画布同时画多张图
2021/02/26 Python
美国职棒大联盟官方网上商店:MLBShop.com
2017/11/12 全球购物
Lookfantastic阿联酋官网:英国知名美妆护肤购物网站
2020/05/26 全球购物
党支部书记岗位责任制
2014/02/11 职场文书
《雨点》教学反思
2014/02/12 职场文书
乡镇领导班子批评与自我批评材料
2014/09/23 职场文书
党的群众路线教育实践活动制度建设计划
2014/11/03 职场文书
2015大学生实训报告
2014/11/05 职场文书
华清池导游词
2015/02/02 职场文书
白鹤梁导游词
2015/02/06 职场文书
2015年度班主任自我评价
2015/03/11 职场文书
积极心理学课程心得体会
2016/01/22 职场文书