首頁 >php框架 >Laravel >Laravel - 事件處理

Laravel - 事件處理

王林
王林原創
2024-08-27 10:50:39986瀏覽

Events 提供了一個簡單的觀察者實現,允許使用者訂閱和監聽 Web 應用程式中觸發的各種事件。 Laravel 中的所有事件類別都儲存在 app/Events 資料夾中,監聽器儲存在 app/Listeners 資料夾中。

用於在 Web 應用程式中產生事件和監聽器的 artisan 命令如下所示 -

 php artisan event:generate

此命令將事件和偵聽器產生到上面討論的各個資料夾。

Event Generator

事件和偵聽器是解耦 Web 應用程式的一種好方法,因為一個事件可以有多個獨立的偵聽器彼此的。 artisan 指令所建立的 events 資料夾包含以下兩個檔案:event.php 和 SomeEvent.php。它們顯示在這裡 -

Event.php

<?php
命名空間 AppEvents;
抽象類別事件{
   //
}

如上所述,event.php包含類別Event的基本定義以及對命名空間AppEvents的呼叫。請注意,使用者定義或自訂事件是在此文件中建立的。

SomeEvent.php

<?php

命名空間 AppEvents;

使用 AppEventsEvent;
使用 IlluminateQueueSerializesModels;
使用 IlluminateContractsBroadcastingShouldBroadcast;

SomeEvent 類別擴展了 Event{
   使用 SerializesModels;
   /**      * 建立一個新的事件實例。
      *
      * @return 無效
   */
   
   公共函數__construct(){
      //
   }
   
   /**      * 取得應該廣播該事件的頻道。
      *
      * @return 陣列
   */
   
   公共函數broadcastOn(){
      返回 [];
   }
}

觀察該檔案在 Web 應用程式中使用序列化來廣播事件,並且必要的參數也在該檔案中初始化。

例如,如果我們需要在建構子中初始化 order 變數來註冊事件,我們可以以下方式執行 -

public function __construct(Order $order) {
   $this->order = $order;
}

監聽器

監聽器處理正在註冊的事件中提到的所有活動。 artisan 指令 event:generateapp/listeners 目錄中建立所有 listeners。 Listeners 資料夾包含一個檔案EventListener.php,其中包含處理偵聽器所需的所有方法。

EventListener.php

<?php

命名空間 AppListeners;

使用 AppEventsSomeEvent;
使用 IlluminateQueueInteractsWithQueue;
使用 IlluminateContractsQueueShouldQueue;

類別EventListener{
   /**      * 建立事件監聽器。
      *
      * @return 無效
   */
   
   公共函數__construct(){
      //
   }

   /**      * 處理事件。
      *
      * @param SomeEvent $event
      * @return 無效
   */
   
   公共函數句柄(SomeEvent $event){
      //
   }
}

程式碼中提到,它包含handle用於管理各種事件的函數。我們可以建立針對單一事件的各種獨立偵聽器。

以上是Laravel - 事件處理的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn