這里講述最佳實踐方案,分以下步驟:
第一步:注冊事件和監聽器。
在EventServiceP" />

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

最新評論

黑龙江新11选5开奖结果