溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

怎么在Laravel中使用事件監(jiān)聽器

發(fā)布時(shí)間:2021-04-02 16:06:49 來(lái)源:億速云 閱讀:108 作者:Leah 欄目:開發(fā)技術(shù)

這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)?lái)有關(guān)怎么在Laravel中使用事件監(jiān)聽器,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

第一步:注冊(cè)事件和監(jiān)聽器。

在EventServiceProvider的linsten數(shù)組里面加上事件和監(jiān)聽器,鍵名是事件,鍵值里面的數(shù)組是一個(gè)或者多個(gè)監(jiān)聽器,意思是當(dāng)某一個(gè)事件發(fā)生的時(shí)候,傳送給數(shù)組里面的那些個(gè)監(jiān)聽器,執(zhí)行一些列操作。

這里,我監(jiān)聽發(fā)送短信驗(yàn)證碼事件,一旦有發(fā)送驗(yàn)證碼動(dòng)作,我就要到驗(yàn)證碼發(fā)送記錄表里面添加一條數(shù)據(jù),用以記錄。

D:\phpStudy\WWW\BCCKidV1.0\app\Providers\EventServiceProvider.php

protected $listen = [
  'App\Events\Event' => [
    'App\Listeners\EventListener',
  ],
  'App\Events\SendPhoneCodeEvent' => [
    'App\Listeners\SendPhoneCodeListener',
  ],
];

第二步:生成監(jiān)聽和事件文件。

php artisan event:generate

就會(huì)自動(dòng)生成如下兩個(gè)文件:

D:\phpStudy\WWW\BCCKidV1.0\app\Events\SendPhoneCodeEvent.php
D:\phpStudy\WWW\BCCKidV1.0\app\Listeners\SendPhoneCodeListener.php

第三步:打開App\Events\SendPhoneCodeEvent,

加上一個(gè)屬性,這個(gè)屬性是一個(gè)數(shù)組,里面會(huì)有驗(yàn)證碼內(nèi)容,接收驗(yàn)證碼的手機(jī)號(hào)碼等信息。

public $data;
public function __construct($data)
{
  $this->data = $data;
}

第四步:設(shè)置監(jiān)聽器里面需要執(zhí)行的操作,這里我就直接插入一條記錄就行了。

public function handle(SendPhoneCodeEvent $event)
{
  AuthCode::create($event->data);
}

第五步:觸發(fā)事件。

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),
];
#觸發(fā)事件
event(new SendPhoneCodeEvent($data));

自己的想法:

1、事件的作用其實(shí)可以被一個(gè)方法代替,你在需要調(diào)用的地方引用一下,然后執(zhí)行這個(gè)方法就行了。但是事件有個(gè)好處,他默認(rèn)使用隊(duì)列來(lái)處理,可以用來(lái)操作那些比較耗時(shí)的操作,例如發(fā)送郵件,發(fā)送驗(yàn)證碼等等。

2、代碼比較整潔,看起來(lái)會(huì)舒服一點(diǎn)。

上述就是小編為大家分享的怎么在Laravel中使用事件監(jiān)聽器了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI