您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關laravel中事件以及觀察者的示例分析的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
一:事件與監聽器
事件是一個比較廣泛的的名詞,他可以代表所做的一個動作。和事件一起出現的就是監聽器了,其作用是用來監聽你所做的事情,用來對你的行為做后續處理。
事件系統為應用各個方面的解耦提供了非常棒的方法,因為單個事件可以擁有多個互不依賴的監聽器。例如,你可能希望每次訂單發貨時向用戶發送一個通知。你可以編寫一個可以被監聽的事件,而不是將訂單處理代碼通知代碼耦合在一起。
事件:
Laravel 框架想要創建事件可以通過以下命令來創建:
php artisan make:event 事件名稱
該文件會存放在 app/Events 目錄下面。
監聽器:
創建監聽器可以使用以下命令來創建:
php artisan make:listener 監聽器名稱
注冊:
事件和監聽器在創建完畢后,還需要將二者聯合起來。我們可以在 EventServiceProvider 服務提供者中進行注冊。如下:
protected $listen = [ 事件名稱 => [ 監聽器名稱, . ], ];
分發
event(new TestEvent());
二:模型事件
模型事件是專門針對模型而額外添加的功能。其給我們創建了對應的事件與監聽。在使用模型事件事,我們需要遵守模型給我們的規則:
retrieved: 獲取到模型實例后觸發
creating: 插入到數據庫前觸發
created: 插入到數據庫后觸發
updating: 更新到數據庫前觸發
updated: 更新到數據庫后觸發
saving: 保存到數據庫前觸發(插入/更新之前,無論插入還是更新都會觸發)
saved: 保存到數據庫后觸發(插入/更新之后,無論插入還是更新都會觸發)
deleting: 從數據庫刪除記錄前觸發
deleted: 從數據庫刪除記錄后觸發
restoring: 恢復軟刪除記錄前觸發
restored: 恢復軟刪除記錄后觸發
需要在模型處綁定
protected $dispatchesEvents = [ 'saving' => \App\Events\TestEvent::class, // 'updated' => \App\Events\TestEvent::class, ];
三:觀察者
事件需要與監聽器關聯來,當監聽器變多了我們還需進行注冊實現,這樣會比較麻煩,這時我們可以考慮使用觀察者。如果在一個模型上監聽了多個事件,可以使用觀察者來將這些監聽器組織到一個單獨的類中。
觀察者使用:
觀察者的創建可以使用以下命令來創建:
php artisan make:observer
如果想要直接跟模型關聯起來,還可以直接加入參數與模型關聯:
php artisan make:observer UserObserver --model=User
觀察者注冊:
在服務提供者中注冊
User::observe(UserObserver::class);
或在模型中注冊
public static function booted() { self::observe(UserObserver::class); }
感謝各位的閱讀!關于“laravel中事件以及觀察者的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。