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 相关文章推荐
PHPnow安装服务[apache_pn]失败的问题的解决方法
Sep 10 PHP
基于PHP5魔术常量与魔术方法的详解
Jun 13 PHP
Memcached常用命令以及使用说明详解
Jun 27 PHP
php文字水印和php图片水印实现代码(二种加水印方法)
Dec 25 PHP
3个PHP多维数组转为一维数组的方法实例
Mar 13 PHP
ThinkPHP3.1新特性之多层MVC的支持
Jun 19 PHP
php+mysqli数据库连接的两种方式
Jan 28 PHP
PHP根据图片色界在不同位置加水印的方法
Jul 01 PHP
php实现简易聊天室应用代码
Sep 23 PHP
ThinkPHP的常用配置选项汇总
Mar 24 PHP
php静态成员方法和静态的成员属性的使用方法
Oct 26 PHP
PHP对称加密算法(DES/AES)类的实现代码
Nov 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
php小技巧 把数组的键和值交换形成了新的数组,查找值取得键
2011/06/02 PHP
PHP url 加密解密函数代码
2011/08/26 PHP
PHP中使用GD库创建圆形饼图的例子
2014/11/19 PHP
PHP receiveMail实现收邮件功能
2018/04/25 PHP
使用js 设置url参数
2013/07/08 Javascript
jquery插件开发之实现md5插件
2014/03/17 Javascript
什么是Node.js?Node.js详细介绍
2014/06/01 Javascript
Bootstrap编写一个兼容主流浏览器的受众巨幕式风格页面
2016/07/01 Javascript
JS简单设置下拉选择框默认值的方法
2016/08/20 Javascript
Json对象和字符串互相转换json数据拼接和JSON使用方式详细介绍(小结)
2016/10/25 Javascript
AngularJS执行流程详解
2017/02/17 Javascript
vue如何实现observer和watcher源码解析
2017/03/09 Javascript
详解vue跨组件通信的几种方法
2017/06/15 Javascript
使用Vuex解决Vue中的身份验证问题
2018/09/28 Javascript
新手快速上手webpack4打包工具的使用详解
2019/01/28 Javascript
JS校验与最终登陆界面功能完整示例
2020/01/13 Javascript
Jquery高级应用Deferred对象原理及使用实例
2020/05/28 jQuery
js实现滑动进度条效果
2020/08/21 Javascript
python抓取网页图片并放到指定文件夹
2014/04/24 Python
python通过BF算法实现关键词匹配的方法
2015/03/13 Python
微信跳一跳游戏python脚本
2020/04/01 Python
python实现将一个数组逆序输出的方法
2018/06/25 Python
使用python将图片格式转换为ico格式的示例
2018/10/22 Python
python try 异常处理(史上最全)
2019/03/07 Python
CSS3属性 line-clamp控制文本行数的使用
2020/03/19 HTML / CSS
使用HTML5拍照示例代码
2013/08/06 HTML / CSS
HTML5 Canvas 绘图——使用 Canvas 绘制图形图文教程 使用html5 canvas 绘制精美的图
2015/08/31 HTML / CSS
应用电子专业学生的自我评价
2013/10/16 职场文书
幼儿园老师寄语
2014/04/03 职场文书
法律专业自荐信
2014/06/03 职场文书
商务专员岗位职责范本
2014/06/29 职场文书
农业项目建议书
2014/08/25 职场文书
作风建设剖析材料
2014/10/06 职场文书
外贸采购员岗位职责
2015/04/03 职场文书
诚信考试承诺书范文
2015/04/29 职场文书
2016五一手机促销广告语
2016/01/28 职场文书