laravel是一套簡(jiǎn)潔、優(yōu)雅的php web開發(fā)框架(php web framework)。它可以讓你從面條一樣雜亂的代碼中解脫出來(lái);它可以幫你構(gòu)建一個(gè)完美的網(wǎng)絡(luò)app,而且每行代碼都可以簡(jiǎn)潔、富于表達(dá)力。
本文介紹laravel事件監(jiān)聽器用法,結(jié)合實(shí)例形式分析了laravel事件監(jiān)聽器的注冊(cè)、使用相關(guān)流程及操作技巧
第一步:注冊(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)。