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传输数据的代码
Nov 13 PHP
一步一步学习PHP(2)――PHP类型
Feb 15 PHP
PHP求最大子序列和的算法实现
Jun 24 PHP
php中批量替换文件名的实现代码
Jul 20 PHP
php 中英文语言转换类代码
Aug 11 PHP
PHP 的异常处理、错误的抛出及回调函数等面向对象的错误处理方法
Dec 07 PHP
PHP转换文件夹下所有文件编码的实现代码
Jun 06 PHP
PHP+Memcache实现wordpress访问总数统计(非插件)
Jul 04 PHP
PHP递归遍历指定文件夹内的文件实现方法
Nov 15 PHP
PHP按符号截取字符串的指定部分的实现方法
Sep 10 PHP
Laravel 使用查询构造器配合原生sql语句查询的例子
Oct 12 PHP
thinkPHP框架乐观锁和悲观锁实例分析
Oct 30 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基础知识:函数基础知识
2006/12/13 PHP
php 正则表达式小结
2009/08/31 PHP
php支持中文字符串分割的函数
2015/05/28 PHP
php防止sql注入的方法详解
2017/02/20 PHP
PHP实现的多进程控制demo示例
2019/07/22 PHP
疯掉了,尽然有js写的操作系统
2007/04/23 Javascript
不懂JavaScript应该怎样学
2008/04/16 Javascript
JavaScript 学习点滴记录
2009/04/24 Javascript
Webkit的跨域安全问题说明
2011/09/13 Javascript
jquery中的过滤操作详细解析
2013/12/02 Javascript
JQuery替换DOM节点的方法
2015/06/11 Javascript
JavaScript 中对象的深拷贝
2016/12/04 Javascript
AngularJS学习第一篇 AngularJS基础知识
2017/02/13 Javascript
vue2实现移动端上传、预览、压缩图片解决拍照旋转问题
2017/04/13 Javascript
详解微信小程序 通过控制CSS实现view隐藏与显示
2017/05/24 Javascript
vue 如何添加全局函数或全局变量以及单页面的title设置总结
2017/06/01 Javascript
关于jquery layui弹出层的使用方法
2018/04/21 jQuery
layer.confirm取消按钮绑定事件的方法
2018/08/17 Javascript
微信小程序canvas分享海报功能
2019/10/31 Javascript
vue微信分享插件使用方法详解
2020/02/18 Javascript
使用webpack5从0到1搭建一个react项目的实现步骤
2020/12/16 Javascript
[03:12]TI9战队档案 - Virtus Pro
2019/08/20 DOTA
纯Python开发的nosql数据库CodernityDB介绍和使用实例
2014/10/23 Python
详解Python3的TFTP文件传输
2018/06/26 Python
对Python的多进程锁的使用方法详解
2019/02/18 Python
Python/Django后端使用PIL Image生成头像缩略图
2019/04/30 Python
python读取mysql数据绘制条形图
2020/03/25 Python
基于Pytorch版yolov5的滑块验证码破解思路详解
2021/02/25 Python
英国体育器材进口商店:UK Sport Imports
2017/03/14 全球购物
海南地接欢迎词
2014/01/14 职场文书
《独坐敬亭山》教学反思
2014/04/08 职场文书
住宅使用说明书
2014/05/09 职场文书
党员对照检查材料思想汇报(党的群众路线)
2014/09/24 职场文书
优秀教师先进材料
2014/12/16 职场文书
仓管员岗位职责范本
2015/04/01 职场文书
python批量更改目录名/文件名的方法
2021/04/18 Python