Laravel 8 分发事件
要分发事件,你可以将事件实例传递给 event
辅助函数。该辅助函数将会把事件分发到所有该事件已注册的监听器上。event
辅助函数可以全局使用,你可以在应用中的任何位置进行调用:
<?php
namespace App\Http\Controllers;
use App\Events\OrderShipped;
use App\Http\Controllers\Controller;
use App\Models\Order;
class OrderController extends Controller
{
/**
* 为给定的订单发货
*
* @param int $orderId
* @return Response
*/
public function ship($orderId)
{
$order = Order::findOrFail($orderId);
// 订单发货逻辑 ...
event(new OrderShipped($order));
}
}
另外,如果你的事件使用 Illuminate\Foundation\Events\Dispatchable
trait, 则可以在事件上调用静态的 dispatch
方法。 传递给 dispatch
方法的所有参数都将传递给事件的构造函数:
OrderShipped::dispatch($order);
技巧:在测试时,只需要断言特定事件被分发,而不需要真正地触发监听器。Laravel 的 内置测试辅助函数 可以轻松做到这一点。