Events 提供了一個簡單的觀察者實現,允許使用者訂閱和監聽 Web 應用程式中觸發的各種事件。 Laravel 中的所有事件類別都儲存在 app/Events 資料夾中,監聽器儲存在 app/Listeners 資料夾中。
用於在 Web 應用程式中產生事件和監聽器的 artisan 命令如下所示 -
php artisan event:generate
此命令將事件和偵聽器產生到上面討論的各個資料夾。
事件和偵聽器是解耦 Web 應用程式的一種好方法,因為一個事件可以有多個獨立的偵聽器彼此的。 artisan 指令所建立的 events 資料夾包含以下兩個檔案:event.php 和 SomeEvent.php。它們顯示在這裡 -
<?php 命名空間 AppEvents; 抽象類別事件{ // }
如上所述,event.php包含類別Event的基本定義以及對命名空間AppEvents的呼叫。請注意,使用者定義或自訂事件是在此文件中建立的。
<?php 命名空間 AppEvents; 使用 AppEventsEvent; 使用 IlluminateQueueSerializesModels; 使用 IlluminateContractsBroadcastingShouldBroadcast; SomeEvent 類別擴展了 Event{ 使用 SerializesModels; /** * 建立一個新的事件實例。 * * @return 無效 */ 公共函數__construct(){ // } /** * 取得應該廣播該事件的頻道。 * * @return 陣列 */ 公共函數broadcastOn(){ 返回 []; } }
觀察該檔案在 Web 應用程式中使用序列化來廣播事件,並且必要的參數也在該檔案中初始化。
例如,如果我們需要在建構子中初始化 order 變數來註冊事件,我們可以以下方式執行 -
public function __construct(Order $order) { $this->order = $order; }
監聽器處理正在註冊的事件中提到的所有活動。 artisan 指令 event:generate 在 app/listeners 目錄中建立所有 listeners。 Listeners 資料夾包含一個檔案EventListener.php,其中包含處理偵聽器所需的所有方法。
<?php 命名空間 AppListeners; 使用 AppEventsSomeEvent; 使用 IlluminateQueueInteractsWithQueue; 使用 IlluminateContractsQueueShouldQueue; 類別EventListener{ /** * 建立事件監聽器。 * * @return 無效 */ 公共函數__construct(){ // } /** * 處理事件。 * * @param SomeEvent $event * @return 無效 */ 公共函數句柄(SomeEvent $event){ // } }
程式碼中提到,它包含handle用於管理各種事件的函數。我們可以建立針對單一事件的各種獨立偵聽器。
以上是Laravel - 事件處理的詳細內容。更多資訊請關注PHP中文網其他相關文章!