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&mysql(六)
Oct 09 PHP
文件上传程序的全部源码
Oct 09 PHP
gd库图片下载类实现下载网页所有图片的php代码
Aug 20 PHP
表格展示无限级分类(PHP版)
Aug 21 PHP
php导出word格式数据的代码实例
Nov 25 PHP
php中error与exception的区别及应用
Jul 28 PHP
php实现递归与无限分类的方法
Feb 16 PHP
PHP实现仿Google分页效果的分页函数
Jul 29 PHP
PHP实现图片不变型裁剪及图片按比例裁剪的方法
Jan 14 PHP
PHP实现合并两个排序链表的方法
Jan 19 PHP
Laravel框架FormRequest中重写错误处理的方法
Feb 18 PHP
PHP中“=>
Mar 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
Javascript的getYear、getFullYear、getUTCFullYear异同分享
2011/11/30 Javascript
使用jquery实现图文切换效果另加特效
2013/01/20 Javascript
你的 mixin 真的兼容 ECMAScript 5 吗?
2013/04/11 Javascript
javascript和HTML5利用canvas构建猜牌游戏实现算法
2013/07/17 Javascript
JScript中的条件注释详解
2015/04/24 Javascript
jquery插件qrcode在线生成二维码
2015/04/26 Javascript
Ionic实现仿通讯录点击滑动及$ionicscrolldelegate使用分析
2016/01/18 Javascript
javascript正则表达式之分组概念与用法实例
2016/06/16 Javascript
BootStrap Fileinput初始化时的一些参数
2016/12/30 Javascript
Bootstrap.css与layDate日期选择样式起冲突的解决办法
2017/04/07 Javascript
jQuery手风琴的简单制作
2017/05/12 jQuery
jQuery实现获取table中鼠标click点击位置行号与列号的方法
2017/10/09 jQuery
微信小程序实现image组件图片自适应宽度比例显示的方法
2018/01/16 Javascript
玩转Koa之koa-router原理解析
2018/12/29 Javascript
Node.js对MongoDB进行增删改查操作的实例代码
2019/04/18 Javascript
vue组件创建的三种方式小结
2020/02/03 Javascript
web.py中调用文件夹内模板的方法
2014/08/26 Python
使用Python的Tornado框架实现一个简单的WebQQ机器人
2015/04/24 Python
Python的Bottle框架中返回静态文件和JSON对象的方法
2015/04/30 Python
python tensorflow基于cnn实现手写数字识别
2018/01/01 Python
TensorFlow搭建神经网络最佳实践
2018/03/09 Python
pandas 实现将重复表格去重,并重新转换为表格的方法
2018/04/18 Python
Selenium定位元素操作示例
2018/08/10 Python
python如何写出表白程序
2020/06/01 Python
keras训练浅层卷积网络并保存和加载模型实例
2020/07/02 Python
Python函数调用追踪实现代码
2020/11/27 Python
Python logging自定义字段输出及打印颜色
2020/11/30 Python
科茨沃尔德家居商店:Scotts of Stow
2018/06/29 全球购物
毕业生求职简历的自我评价
2013/10/23 职场文书
会计专业的自荐信
2013/12/12 职场文书
教师党员思想汇报
2014/01/06 职场文书
研究生考核个人自我鉴定
2014/03/27 职场文书
给女朋友道歉的话大全
2015/01/20 职场文书
公司员工奖惩制度
2015/08/04 职场文书
《金色的草地》教学反思
2016/02/17 职场文书
MySQL pt-slave-restart工具的使用简介
2021/04/07 MySQL