摘要:什么是事件監(jiān)聽從字面上就可以看出來,無非就是監(jiān)聽一個事件。這時候可能會有人說,那我可以封裝起來啊,是的,你可以封裝起來,然后就可以用簡短的代碼來實(shí)現(xiàn)。但是實(shí)際項目中,會涉及多人開發(fā),這樣就不方便了。
1.什么是“事件監(jiān)聽“?
從字面上就可以看出來,無非就是監(jiān)聽一個事件。
2.使用場景例句一個物流發(fā)貨的場景:我有個小程序商城,用戶下單后需要在后臺發(fā)貨,發(fā)完貨后我想在微信發(fā)送個模塊通知提示用戶,我想了想用戶不登錄微信或者把消息提示關(guān)閉了,那豈不是不能實(shí)時通知用戶已經(jīng)發(fā)貨了,我決定再加個短信通知用戶。有了模塊通知,短信通知后我還嫌不夠...然后我繼續(xù)加.... 通常我們會這么寫:
這樣寫不是不可以,但是邏輯功能越來越多,控制器只會變得臃腫起來,后期不便于維護(hù)。這時候可能會有人說,那我可以封裝起來啊,是的,你可以封裝起來,然后就可以用簡短的代碼來實(shí)現(xiàn)。但是實(shí)際項目中,會涉及多人開發(fā),這樣就不方便了。所以推薦使用laravel自帶的“事件監(jiān)聽“...
3.使用”事件監(jiān)聽"優(yōu)化代碼3.1 打開終端->切換到項目根目錄->使用artisan命令創(chuàng)建事件監(jiān)聽文件
php artisan make:event OrderEvent執(zhí)行完命令,發(fā)現(xiàn) app/Events 目錄下多了個 OrderEvent.php 文件
我們可以打開看看...
簡單的修改下構(gòu)造函數(shù),因?yàn)榈綍r候我們可能會 傳入 購買商品的 用戶
user = $user; } /** * Get the channels the event should broadcast on. * * @return IlluminateBroadcastingChannel|array */ public function broadcastOn() { return new PrivateChannel("channel-name"); } }3.2 綁定事件
打開 app/Providers/EventServiceProvider.php 文件,找到 成員屬性 listen下:
protected $listen = [ Registered::class => [ SendEmailVerificationNotification::class, ], ];把事件關(guān)聯(lián)起來,修改為:
protected $listen = [ Registered::class => [ SendEmailVerificationNotification::class, ], "AppEventsOrderEvent" => [ "AppListenerssendModel", "AppListenerssendPhone", ] ];接著打開終端,執(zhí)行 artisan 命令 生成 監(jiān)聽文件
php artisan event:generate然后我們可以在 app/Listeners 文件下發(fā)現(xiàn)多了兩個文件
打開這兩個文件,依次修改為:
sendModel.php:
user; // @todo: 當(dāng)前用戶 //@todo:發(fā)送消息模板邏輯 dump("發(fā)送消息模板成功"); } }sendPhone.php:
user; // @todo: 當(dāng)前用戶 //@todo:發(fā)送短信消息 dump("發(fā)送短信消息成功"); } }3.3 最后我們再打開 OrderController.php 修改為:
3.4 綁定路由
Route::get("/sendGoods","OrderController@sendGoods");3.5 訪問路由結(jié)果:
4. 總結(jié)這樣是不是簡單,便于維護(hù)了許多呢... 還不會的小伙伴趕緊去試試吧!如果對你有幫助,請給個贊,謝謝!
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/31453.html
摘要:說明本文主要講述使用作為緩存加快頁面訪問速度。何不用來做緩存,等到該達(dá)到一定瀏覽頁面后再刷新下,效率也很高。可作緩存系統(tǒng)隊列系統(tǒng)。 說明:本文主要講述使用Redis作為緩存加快頁面訪問速度。同時,作者會將開發(fā)過程中的一些截圖和代碼黏上去,提高閱讀效率。 備注:作者最近在學(xué)習(xí)github上別人的源碼時,發(fā)現(xiàn)好多在計算一篇博客頁面訪問量view_count時都是這么做的:利用Laravel...
摘要:說明本文主要學(xué)習(xí)下的模型觀察者,把一點(diǎn)點(diǎn)經(jīng)驗(yàn)分享出來希望對別人能有幫助。模型觀察者這個功能能做很多事情,比如模型更新時發(fā)個通知。總結(jié)本篇文章主要學(xué)了下的模型觀察者,發(fā)現(xiàn)這個功能也能使代碼結(jié)構(gòu)更清晰,覺得挺好的。 說明:本文主要學(xué)習(xí)下Laravel的Model Observer模型觀察者,把一點(diǎn)點(diǎn)經(jīng)驗(yàn)分享出來希望對別人能有幫助。同時,作者會將開發(fā)過程中的一些截圖和代碼黏上去,提高閱讀效率...
摘要:框架關(guān)鍵技術(shù)解析讀書筆記二第五章框架應(yīng)用程序根目錄版本默認(rèn)的框架應(yīng)用程序是符合規(guī)范的,所以相應(yīng)的目錄結(jié)構(gòu)也是基本固定的,不同的目錄加載了功能文件,如果添加了新的目錄,需要在文件中添加規(guī)范的自動加載部分并執(zhí)行命令。 Laravel 框架關(guān)鍵技術(shù)解析·讀書筆記(二) 第五章 框架應(yīng)用程序根目錄(5.1版本) 默認(rèn)的Laravel框架應(yīng)用程序是符合PSR規(guī)范的,所以相應(yīng)的目錄結(jié)構(gòu)也是基本...
摘要:總結(jié)本文主要學(xué)習(xí)了啟動時做的七步準(zhǔn)備工作環(huán)境檢測配置加載日志配置異常處理注冊注冊啟動。 說明:Laravel在把Request通過管道Pipeline送入中間件Middleware和路由Router之前,還做了程序的啟動Bootstrap工作,本文主要學(xué)習(xí)相關(guān)源碼,看看Laravel啟動程序做了哪些具體工作,并將個人的研究心得分享出來,希望對別人有所幫助。Laravel在入口index...
閱讀 1856·2021-11-22 15:24
閱讀 1312·2021-11-12 10:36
閱讀 3211·2021-09-28 09:36
閱讀 1842·2021-09-02 15:15
閱讀 2755·2019-08-30 15:54
閱讀 2397·2019-08-30 11:02
閱讀 2397·2019-08-29 13:52
閱讀 3545·2019-08-26 11:53