本篇文章給大家?guī)?lái)了關(guān)于laravel的相關(guān)知識(shí),其中主要介紹了關(guān)于事件監(jiān)聽(tīng)的相關(guān)問(wèn)題,實(shí)現(xiàn)事件監(jiān)聽(tīng)的步驟是創(chuàng)建事件、創(chuàng)建監(jiān)聽(tīng)、綁定事件與監(jiān)聽(tīng)然后觸發(fā)事件,下面根據(jù)示例一起來(lái)看一下,希望對(duì)大家有幫助。
【相關(guān)推薦:laravel】
laravel Event & Listener 事件監(jiān)聽(tīng)機(jī)制,讓開(kāi)發(fā)者不光是可以把代碼組織得更加有條理的手段,而且也是對(duì)現(xiàn)實(shí)社會(huì)運(yùn)行規(guī)則的高度抽象化映射,我們的現(xiàn)實(shí)社會(huì)本來(lái)也是這樣,我們監(jiān)控事物的變化,并對(duì)變化做出反應(yīng),讓事物的發(fā)展按照我們的預(yù)期發(fā)展。當(dāng)現(xiàn)實(shí)映射到代碼邏輯中時(shí),事件及其處理邏輯通常是分開(kāi)的,畢竟不是所有的事件我們都需要馬上進(jìn)行響應(yīng)處理。結(jié)合隊(duì)列,我們可以把事件的監(jiān)聽(tīng)和處理的工作流程做到更加完美。
使用案例:
監(jiān)聽(tīng)log日志文件大小變化
用戶登錄:記錄用戶登錄次數(shù)、記錄訪問(wèn)相關(guān)信息
實(shí)現(xiàn)事件監(jiān)聽(tīng)步驟:
1、創(chuàng)建事件:event
2、創(chuàng)建監(jiān)聽(tīng):listener
3、綁定事件與監(jiān)聽(tīng)
4、觸發(fā)事件
一、手動(dòng)創(chuàng)建事件與監(jiān)聽(tīng)
1、創(chuàng)建登錄事件:event
app/Events/UserLogin.php
php artisan make:event UserLogin//獲取用戶信息實(shí)例 public function __construct(User $user){ $this->user = $user;}
2、創(chuàng)建用戶登錄郵件發(fā)送監(jiān)聽(tīng),同時(shí)綁定UserLogin登錄事件:listener
app/Listeners/EmailAdminUserLogin.php
php artisan make:listener EmailAdminUserLogin --event=UserLogin //日志打印登錄用戶信息public function handle(UserLogin $event) {// dd($event); //日志打印登錄用戶信息 Log::info($event->user->name . '已經(jīng)登錄'); }
3、注冊(cè)事件與監(jiān)聽(tīng)綁定關(guān)系
一個(gè)事件可以對(duì)應(yīng)多個(gè)監(jiān)聽(tīng)
app/Providers/EventServiceProvider.php
protected $listen = [ 'AppEventsUserLogin' => [ 'AppListenersEmailAdminUserLogin', ],];
4、在用戶登錄時(shí)候觸發(fā)事件
app/Http/Controllers/Auth/LoginController.php
//覆寫(xiě)AuthenticatesUsers類(lèi)的authenticated方法protected function authenticated(Request $request, $user){ //觸發(fā)事件 event(new UserLogin($user));}
二、快速生成事件與監(jiān)聽(tīng)
這里會(huì)根據(jù)app/Providers/EventServiceProvider.php中屬性listen生成對(duì)應(yīng)的事件與監(jiān)聽(tīng)
php artisan event:generate
【相關(guān)推薦:laravel】