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.ini中添加extension=php_mysqli.dll指令的说明
Jun 14 PHP
解析centos中Apache、php、mysql 默认安装路径
Jun 25 PHP
php中有关字符串的4个函数substr、strrchr、strstr、ereg介绍和使用例子
Apr 24 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十二)
Jun 25 PHP
php使用explode()函数将字符串拆分成数组的方法
Feb 17 PHP
PHP中返回引用类型的方法
Apr 03 PHP
四个PHP非常实用的功能
Sep 29 PHP
Yii框架参数化查询中IN查询只能查询一个的解决方法
May 20 PHP
深入理解Yii2.0乐观锁与悲观锁的原理与使用
Jul 26 PHP
PHP ADODB实现分页功能简单示例
May 25 PHP
Laravel核心解读之异常处理的实践过程
Feb 24 PHP
在Laravel 的 Blade 模版中实现定义变量
Oct 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 DataGrid 实现代码
2009/08/12 PHP
九个你必须知道而且又很好用的php函数和特点
2013/08/08 PHP
又一个PHP实现的冒泡排序算法分享
2014/08/21 PHP
PHPWind9.0手动屏蔽验证码解决后台关闭验证码但是依然显示的问题
2016/08/12 PHP
thinkPHP利用ajax异步上传图片并显示、删除的示例
2018/09/26 PHP
采用CSS和JS,刚好我最近有个站点要用到下拉菜单!
2006/06/26 Javascript
javascript setTimeout和setInterval 的区别
2009/12/08 Javascript
javascript学习笔记之10个原生技巧
2014/05/21 Javascript
jquery常用的12个小功能
2016/07/22 Javascript
JavaScript实现的九种排序算法
2019/03/04 Javascript
JS中比较两个Object数组是否相等方法实例
2019/11/11 Javascript
Javascript摸拟自由落体与上抛运动原理与实现方法详解
2020/04/08 Javascript
如何解决jQuery 和其他JS库的冲突
2020/06/22 jQuery
python钉钉机器人运维脚本监控实例
2019/02/20 Python
python3-flask-3将信息写入日志的实操方法
2019/11/12 Python
python3.6连接mysql数据库及增删改查操作详解
2020/02/10 Python
HTML5的结构和语义(5):交互
2008/10/17 HTML / CSS
HTML5 微格式和相关的属性名称
2010/02/10 HTML / CSS
微软英国官方网站:Microsoft英国
2016/10/15 全球购物
美国百年历史早餐食品供应商:Wolferman’s
2017/01/18 全球购物
露营世界:Camping World
2017/02/02 全球购物
潘多拉意大利官方网上商城:网上选购PANDORA珠宝
2018/10/07 全球购物
Dyson戴森波兰官网:Dyson.pl
2019/08/05 全球购物
大学生求职简历的自我评价
2013/10/14 职场文书
英语专业毕业生自荐信
2013/10/28 职场文书
办公室文秘岗位职责
2013/11/15 职场文书
英文自我鉴定
2013/12/10 职场文书
户外拓展活动方案
2014/02/11 职场文书
沙滩主题婚礼活动策划方案
2014/09/15 职场文书
预备党员群众路线教育实践活动思想汇报2014
2014/10/25 职场文书
给老婆的检讨书1000字
2015/01/01 职场文书
国庆庆典邀请函
2015/02/02 职场文书
小学教师个人总结
2015/02/05 职场文书
幼儿园教师自荐书
2015/03/06 职场文书
学生通报表扬范文
2015/05/04 职场文书
Python进度条的使用
2021/05/17 Python