亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

laravel 事件監聽中的code如何編寫更合理

laravel 事件監聽中的code如何編寫更合理

慕森王 2018-07-08 11:11:17
初次使用laravel的事件監聽功能,想要實現如下業務邏輯,請教如何編寫合理的代碼!//controller codesclass OrderController extends Controller{    function create()    {        //do something ...                        event(new OrderWasCreated($order_id));    }}//api codesclass ApiController extends Controller{    function sendEmail()    {        //do something ...    }}//Listeners codesclass SendEmail{    public function handle(OrderWasCreated $event)    {        //send email ...    }}有如上三段代碼,現在就是想實現當訂單創建時在監聽器中發送郵件的業務邏輯,不過我不太清楚應該將處理郵件發送的代碼寫在哪里比較合適?于是我創建了一個api做處理,應該如何與監聽器關聯呢???
查看完整描述

3 回答

?
精慕HU

TA貢獻1845條經驗 獲得超8個贊

一般在Listeners 里面就可以完成發送郵件了,你想用api的話,可以把api作為全局的helper來用,或者use ../Api, 然后在SendEmail handle方法new Api()調用

查看完整回答
反對 回復 2018-07-12
?
慕尼黑8549860

TA貢獻1818條經驗 獲得超11個贊

如果是我的話,我會這么做

首先先創建一個OrderCreated的事件

再創建一個OrderCreatedListener,監聽OrderCreated事件

再創建一個OrderCreatedNotification,用于處理訂單創建的通知

最后創建一個OrderCreatedMail,用于生成通知郵件

調用方式是控制器觸發OrderCreated事件,OrderCreatedListener監聽到事件,觸發OrderCreatedNotification,OrderCreatedNotification再調用OrderCreateMail生成通知郵件,最后發送

這么做的好處

  1. 通知從監聽器解耦。監聽器不僅僅只做通知的功能,還可以做例如訂單超時關閉等其他功能(當然也可以額外再創建一個Listener處理)。

  2. 通知非常易于擴展。后期可以非常方便的擴展通知頻道,比如App通知、短信通知等。

  3. Mail與通知解耦。通知里面可以根據用戶類型,調用不同的通知郵件,例如針對VIP用戶和普通用戶,調用不同的Mail類模板,生成不同的Mail。

題主可以根據自己的業務復雜程度進行相應的增減步驟


查看完整回答
反對 回復 2018-07-12
  • 3 回答
  • 0 關注
  • 268 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號