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 相关文章推荐
?生?D片??C字串
Dec 06 PHP
PHP include_path设置技巧分享
Jul 03 PHP
PHP版国家代码、缩写查询函数代码
Aug 14 PHP
解决phpmyadmin中缺少mysqli扩展问题的方法
May 06 PHP
php curl选项列表(超详细)
Jul 01 PHP
如何取得中文字符串中出现次数最多的子串
Aug 08 PHP
PHP session文件独占锁引起阻塞问题解决方法
May 12 PHP
PHP中file_exists使用中遇到的问题小结
Apr 05 PHP
PHP中引用类型和值类型功能与用法示例
Feb 26 PHP
Vagrant(WSL)+PHPStorm+Xdebu 断点调试环境搭建
Dec 13 PHP
浅析PHP中的 inet_pton 网络函数
Dec 16 PHP
php将xml转化对象的实例详解
Nov 17 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中in_array函数使用的问题与解决办法
2016/09/11 PHP
浅谈PHP接入(第三方登录)QQ登录 OAuth2.0 过程中遇到的坑
2017/10/13 PHP
php实现算术验证码功能
2018/12/05 PHP
php学习笔记之字符串常见操作总结
2019/07/16 PHP
php array 转json及java 转换 json数据格式操作示例
2019/11/13 PHP
Javascript 去除数组的重复元素
2010/05/04 Javascript
jQuery学习笔记 操作jQuery对象 CSS处理
2012/09/19 Javascript
JavaScript 更严格的相等 [译]
2012/09/20 Javascript
js实现获取div坐标的方法
2015/11/16 Javascript
浅析创建javascript对象的方法
2016/05/13 Javascript
javascript运算符语法全面概述
2016/07/14 Javascript
基于CSS3和jQuery实现跟随鼠标方位的Hover特效
2016/07/25 Javascript
JS仿hao123导航页面图片轮播效果
2016/09/01 Javascript
Bootstrap页面缩小变形的快速解决办法
2017/02/03 Javascript
JS基于onclick事件实现单个按钮的编辑与保存功能示例
2017/02/13 Javascript
js移动端事件基础及常用事件库详解
2017/08/15 Javascript
[js高手之路]原型式继承与寄生式继承详解
2017/08/28 Javascript
浅谈webpack编译vue项目生成的代码探索
2017/12/11 Javascript
js input输入百分号保存数据库失败的解决方法
2018/05/26 Javascript
使用Vue调取接口,并渲染数据的示例代码
2019/10/28 Javascript
VUE实现强制渲染,强制更新
2019/10/29 Javascript
Python中用Descriptor实现类级属性(Property)详解
2014/09/18 Python
简单的编程0基础下Python入门指引
2015/04/01 Python
python实现飞机大战
2018/09/11 Python
Django使用paginator插件实现翻页功能的实例
2018/10/24 Python
Python数据类型之List列表实例详解
2019/05/08 Python
html5+css3进度条倒计时动画特效代码【推荐】
2016/03/08 HTML / CSS
最新计算机专业自荐信
2013/10/16 职场文书
前厅部经理岗位职责范文
2014/02/04 职场文书
军训感想500字
2014/02/20 职场文书
实习证明格式范文
2014/10/14 职场文书
2014年药剂科工作总结
2014/11/26 职场文书
荒岛余生观后感
2015/06/09 职场文书
2016七夕情人节感言
2015/12/09 职场文书
nginx.conf配置文件结构小结
2022/04/08 Servers
使用Redis实现分布式锁的方法
2022/06/16 Redis