Laravel 8 分發(fā)事件

2021-07-14 17:30 更新

要分發(fā)事件,你可以將事件實例傳遞給 event 輔助函數(shù)。該輔助函數(shù)將會把事件分發(fā)到所有該事件已注冊的監(jiān)聽器上。event 輔助函數(shù)可以全局使用,你可以在應(yīng)用中的任何位置進行調(diào)用:

<?php

namespace App\Http\Controllers;

use App\Events\OrderShipped;
use App\Http\Controllers\Controller;
use App\Models\Order;

class OrderController extends Controller
{
    /**
     * 為給定的訂單發(fā)貨
     *
     * @param  int  $orderId
     * @return Response
     */
    public function ship($orderId)
    {
        $order = Order::findOrFail($orderId);

        // 訂單發(fā)貨邏輯 ...

        event(new OrderShipped($order));
    }
} 

另外,如果你的事件使用 Illuminate\Foundation\Events\Dispatchable trait, 則可以在事件上調(diào)用靜態(tài)的 dispatch 方法。 傳遞給 dispatch 方法的所有參數(shù)都將傳遞給事件的構(gòu)造函數(shù):

OrderShipped::dispatch($order); 

技巧:在測試時,只需要斷言特定事件被分發(fā),而不需要真正地觸發(fā)監(jiān)聽器。Laravel 的 內(nèi)置測試輔助函數(shù) 可以輕松做到這一點。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號