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数据库连接时容易出错的特殊符号问题
Sep 01 PHP
深入解析php之apc
May 15 PHP
php读取二进制流(C语言结构体struct数据文件)的深入解析
Jun 13 PHP
php中cookie的使用方法
Mar 29 PHP
php中数据库连接方式pdo和mysqli对比分析
Feb 25 PHP
PHP利用hash冲突漏洞进行DDoS攻击的方法分析
Mar 26 PHP
Linux下从零开始安装配置Nginx服务器+PHP开发环境
Dec 21 PHP
PHP获取页面执行时间的方法(推荐)
Dec 10 PHP
PHP执行shell脚本运行程序不产生core文件的方法
Dec 28 PHP
PHP设计模式之装饰器模式定义与用法详解
Apr 02 PHP
PHP排序算法之简单选择排序(Simple Selection Sort)实例分析
Apr 20 PHP
PHP加MySQL消息队列深入理解
Feb 27 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
基于header的一些常用指令详解
2013/06/06 PHP
Yii输入正确验证码却验证失败的解决方法
2017/06/06 PHP
List Information About the Binary Files Used by an Application
2007/06/18 Javascript
jquery异步调用页面后台方法‏(asp.net)
2011/03/01 Javascript
jQuery总体架构的理解分析
2011/03/07 Javascript
jquery实现的一个导航滚动效果具体代码
2013/05/27 Javascript
js中的cookie的读写操作示例详解
2014/04/17 Javascript
js对象继承之原型链继承实例
2015/01/10 Javascript
ECMA5数组的新增方法有哪些及forEach()模仿实现
2015/11/03 Javascript
Jquery实现仿京东商城省市联动菜单
2015/11/19 Javascript
JavaScript语言精粹经典实例(整理篇)
2016/06/07 Javascript
EasyUI在表单提交之前进行验证的实例代码
2016/06/24 Javascript
很棒的Bootstrap选项卡切换效果
2016/07/01 Javascript
JS前向后瞻正则表达式定义与用法示例
2016/12/27 Javascript
Angularjs中ng-repeat-start与ng-repeat-end的用法实例介绍
2016/12/31 Javascript
jQuery获取Table某列的值(推荐)
2017/03/03 Javascript
微信小程序中遇到的iOS兼容性问题小结
2018/11/14 Javascript
使用 Vue cli 3.0 构建自定义组件库的方法
2019/04/30 Javascript
解决vue请求接口第一次成功,第二次失败问题
2020/09/08 Javascript
[33:23]VG vs Pain 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
python删除文件示例分享
2014/01/28 Python
利用python为运维人员写一个监控脚本
2018/03/25 Python
python 生成图形验证码的方法示例
2018/11/11 Python
利用python计算windows全盘文件md5值的脚本
2019/07/27 Python
解决python调用自己文件函数/执行函数找不到包问题
2020/06/01 Python
使用Keras建立模型并训练等一系列操作方式
2020/07/02 Python
关于.NET, HTML的五个问题
2012/08/29 面试题
仓库理货员岗位职责
2013/12/18 职场文书
八年级生物教学反思
2014/01/22 职场文书
司机职责范本
2014/03/08 职场文书
中班幼儿评语大全
2014/04/30 职场文书
中秋手机店促销方案
2014/06/16 职场文书
本科应届生自荐信
2014/06/29 职场文书
解决hive中导入text文件遇到的坑
2021/04/07 Python
python字符串的多行输出的实例详解
2021/06/08 Python
MySQL详细讲解变量variables的用法
2022/06/21 MySQL