搜尋
首頁php框架Laravel一起學習laravel中的事件以及觀察者吧!

以下由laravel教學專欄為大家介紹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影片教學

以上是一起學習laravel中的事件以及觀察者吧!的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:jianshu。如有侵權,請聯絡admin@php.cn刪除
技術問題:確保公平地訪問分佈式團隊成員的工具和資源技術問題:確保公平地訪問分佈式團隊成員的工具和資源Apr 29, 2025 am 12:40 AM

確保分佈式團隊成員公平獲取工具和資源的方法包括:1)使用低帶寬替代方案,如異步視頻或文本更新,解決連接問題;2)設立核心重疊工作時間,並提供靈活工作時間,管理時區差異;3)通過翻譯功能和文化意識培訓,適應不同文化需求。這些策略有助於創建一個包容和高效的遠程工作環境。

即時消息必備:在遠程設置中促進實時通信即時消息必備:在遠程設置中促進實時通信Apr 29, 2025 am 12:38 AM

ForenHancingRemoteCollaboration,AninStantMessagingToolMusThave:1)可靠性ForConsistentMessageDelivery,2)AnintuiveduserInterInterInterterfaceForeasyNavigation,3)Real-Timenotificationstostostostostostostostostostostostostostostostostostayupdated,4)SeamelesselessfileSlessFileSlessFileSlessFileSlesselessFileSleSlessForefliceForefliceDocumentExchange,5)集成

在分佈式團隊中工作時,您是否曾面臨任何挑戰?在分佈式團隊中工作時,您是否曾面臨任何挑戰?Apr 29, 2025 am 12:35 AM

Thebiggestchallengeofmanagingdistributedteamsiscommunication.Toaddressthis,usetoolslikeSlack,Zoom,andGitHub;setclearexpectations;fostertrustandautonomy;implementasynchronousworkpatterns;andintegratetaskmanagementwithcommunicationplatformsforefficient

新的Laravel版本有什麼安全性改進?新的Laravel版本有什麼安全性改進?Apr 29, 2025 am 12:17 AM

Laravel的最新版本在安全性方面有显著提升,包括:1.增强的CSRF保护,通过更robust的token验证机制;2.改进的SQL注入防护,通过增强的查询构建方法;3.更好的会话加密,确保用户数据安全;4.改进的认证系统,支持更细粒度的用户认证和多因素认证(MFA)的实现。

時區探戈:在全球勞動力中導航計劃衝突時區探戈:在全球勞動力中導航計劃衝突Apr 29, 2025 am 12:13 AM

TonavigatesChedulingConflictSinaglobalworkforce,Usetechnology,Ensathy and Strategicplanning:1)hosporlikeTimeBuddyorCalendlyForscheduling; 2)RotateMeetingTimeStoEnsurefairness; 3)spentCoreSurefair; 3)specoreCoreHoursibible foreverlap; 4)

Laravel的全堆棧開發:管理API和前端邏輯Laravel的全堆棧開發:管理API和前端邏輯Apr 28, 2025 am 12:22 AM

在Laravel全棧開發中,管理API和前端邏輯的有效方法包括:1)使用RESTful控制器和資源路由管理API;2)通過Blade模板和Vue.js或React處理前端邏輯;3)通過API版本控制和分頁優化性能;4)保持後端和前端邏輯分離,確保可維護性和可擴展性。

翻譯失落:分佈式團隊中的文化細微差別和誤解翻譯失落:分佈式團隊中的文化細微差別和誤解Apr 28, 2025 am 12:22 AM

TotackleculturalIntricaciesIndistributedTeams,fosteranenvironmentcelebratingDifferences,BemindfulofCommunication,andusetoolsforclarity.1)ImpartimentCulturalexchangessessionStossessessionStosharestories andraditions.2)

測量連接:分析和見解遠程通信有效性測量連接:分析和見解遠程通信有效性Apr 28, 2025 am 12:16 AM

Toassesstheeffectivenessofremotecommunication,focuson:1)Engagementmetricslikemessagefrequencyandresponsetime,2)Sentimentanalysistogaugeemotionaltone,3)Meetingeffectivenessthroughattendanceandactionitems,and4)Networkanalysistounderstandcommunicationpa

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)