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 相关文章推荐
几种显示数据的方法的比较
Oct 09 PHP
FleaPHP的安全设置方法
Sep 15 PHP
PHP+Mysql+jQuery实现动态展示信息
Oct 08 PHP
使用迭代器 遍历文件信息的详解
Jun 08 PHP
C#使用PHP服务端的Web Service通信实例
Apr 08 PHP
PHP连接MSSQL2008/2005数据库(SQLSRV)配置实例
Oct 22 PHP
php建立Ftp连接的方法
Mar 07 PHP
php中使用GD库做验证码
Mar 31 PHP
PHP入门教程之PHP操作MySQL的方法分析
Sep 11 PHP
Zend Framework框架实现类似Google搜索分页效果
Nov 25 PHP
PHP实现二维数组按照指定的字段进行排序算法示例
Apr 23 PHP
Laravel 框架路由原理与路由访问实例分析
Apr 14 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
新的一年,新的期待:DC在2020年的四部动画电影
2020/01/01 欧美动漫
PHP MVC模式在网站架构中的实现分析
2010/03/04 PHP
php加水印的代码(支持半透明透明打水印,支持png透明背景)
2013/01/17 PHP
php使用反射插入对象示例分享
2014/03/11 PHP
jQuery live
2009/05/15 Javascript
javascript判断移动端访问设备并解析对应CSS的方法
2015/02/05 Javascript
使用js复制链接中的部分文字的方法
2015/07/30 Javascript
javascript实现添加附件功能的方法
2015/11/18 Javascript
3种不同的ContextMenu右键菜单实现代码
2016/11/03 Javascript
JS判断鼠标进入容器的方向与window.open新窗口被拦截的问题
2016/12/23 Javascript
jQuery+pjax简单示例汇总
2017/04/21 jQuery
JavaScript数据结构学习之数组、栈与队列
2017/05/02 Javascript
angular ng-click防止重复提交实例
2017/06/16 Javascript
浅谈针对Vue相同路由不同参数的刷新问题
2018/09/29 Javascript
小程序封装wx.request请求并创建接口管理文件的实现
2019/04/29 Javascript
Python写的英文字符大小写转换代码示例
2015/03/06 Python
利用Python中的pandas库对cdn日志进行分析详解
2017/03/07 Python
深入浅析Python中list的复制及深拷贝与浅拷贝
2018/09/03 Python
对Python通过pypyodbc访问Access数据库的方法详解
2018/10/27 Python
对python opencv 添加文字 cv2.putText 的各参数介绍
2018/12/05 Python
利用python在excel里面直接使用sql函数的方法
2019/02/08 Python
PyQt QCombobox设置行高的方法
2019/06/20 Python
python多线程并发实例及其优化
2019/06/27 Python
selenium中get_cookies()和add_cookie()的用法详解
2020/01/06 Python
Flask 上传自定义头像的实例详解
2020/01/09 Python
localStorage 设置过期时间的方法实现
2018/12/21 HTML / CSS
HTML5中使用json对象的实例代码
2018/09/10 HTML / CSS
Html5适配iphoneX刘海屏的简单实现
2019/04/09 HTML / CSS
雅诗兰黛(Estee Lauder)英国官方网站:世界顶级化妆品牌
2016/12/29 全球购物
什么样的创业计划书可行性高?
2014/02/01 职场文书
网络编辑岗位职责
2014/03/18 职场文书
船舶工程技术专业求职信
2014/08/07 职场文书
2015年幼儿园保育员工作总结
2015/04/23 职场文书
党员转正大会主持词
2015/07/02 职场文书
大学三好学生主要事迹范文
2015/11/03 职场文书
详解Redis集群搭建的三种方式
2021/05/31 Redis