Laravel事件监听器用法实例分析

 更新时间:2019-04-17 21:42:55   作者:佚名   我要评论(0)

本文实例讲述了Laravel事件监听器用法。分享给大家供大家参考,具体如下:
这里讲述最佳实践方案,分以下步骤:
第一步:注册事件和监听器。
在EventServiceP

本文实例讲述了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相关内容感兴趣的读者可查看本站专题:《Laravel框架入门与进阶教程》、《php优秀开发框架总结》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

希望本文所述对大家基于Laravel框架的PHP程序设计有所帮助。

您可能感兴趣的文章:

  • laravel 事件/监听器实例代码

相关文章

  • 正则表达式匹配路由的实现代码

    正则表达式匹配路由的实现代码

    在 web 开发中,可能会出现限制用户访问规则的场景,那么这个时候就需要用到正则匹配,根据自己的规则去限定请求参数再进行访问 具体实现步骤为: 导入转换
    2019-04-17
  • PHP PDO数据库操作预处理与注意事项

    PHP PDO数据库操作预处理与注意事项

    PDO(PHP Database Object)扩展为PHP访问数据库定义了一个轻量级的、一致性的接口,它提供了一个数据访问抽象层,这样,无论使用什么数据库,都可以通过一致
    2019-04-17
  • Laravel事件监听器用法实例分析

    Laravel事件监听器用法实例分析

    本文实例讲述了Laravel事件监听器用法。分享给大家供大家参考,具体如下: 这里讲述最佳实践方案,分以下步骤: 第一步:注册事件和监听器。 在EventServiceP
    2019-04-17
  • 浅谈正则速记法的技巧

    浅谈正则速记法的技巧

    给你一篇文章,如何挑选出你想要的字符串呢?你可以从左到右从上到下,一个一个字符读取出来,写一大堆if做判断。这样太麻烦了,正则就是将以上过程抽象出来,
    2019-04-17
  • PHP精确到毫秒秒杀倒计时实例详解

    PHP精确到毫秒秒杀倒计时实例详解

    精确到毫秒秒杀倒计时PHP源码实例,前台js活动展示倒计时,后台计算倒计时时间。每0.1秒定时刷新活动倒计时时间。 PHP: // 注意:php的时间是以秒算。
    2019-04-17
  • Asp.net core中实现自动更新的Option的方法示例

    Asp.net core中实现自动更新的Option的方法示例

    Asp.net core可以监视json、xml等配置文件的变化, 自动刷新内存中的配置内容, 但如果想每隔1秒从zookeeper、consul获取最新的配置信息, 需要自己实现. 阅读了
    2019-04-17
  • JS 正则表达式从地址中提取省市县

    JS 正则表达式从地址中提取省市县

    直接上代码,一看就懂, 一般国内地址返回Array前三项就是省市县,若要扩展到社区、街道等可自行扩展。 var add1 = '四川省成都市都江堰市天马镇34号';
    2019-04-17
  • Laravel框架实现的使用smtp发送邮件功能示例

    Laravel框架实现的使用smtp发送邮件功能示例

    本文实例讲述了Laravel框架实现的使用smtp发送邮件功能。分享给大家供大家参考,具体如下: 1、.env文件中配置 MAIL_DRIVER=smtp MAIL_HOST=smtp.邮箱后缀
    2019-04-17
  • 解决正则表达式\w和\d的疑惑

    解决正则表达式\w和\d的疑惑

    <&#63;php $string='April15,2003'; $pattern='/(\w+)(\d+),(\d+)/i'; $replacement='${1},${3}'; echo preg_replace($pattern,$replacement,$string); &#6
    2019-04-17
  • js正则表达式 匹配两个特定字符间的内容示例

    js正则表达式 匹配两个特定字符间的内容示例

    1、js截取两个字符串之间的内容: var str = "aaabbbcccdddeeefff"; str = str.match(/aaa(\S*)fff/)[1]; alert(str);//结果bbbcccdddeee 2、js截取某个
    2019-04-17

最新评论