codecamp

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 的 内置测试辅助函数 可以轻松做到这一点。


Laravel 8 处理失败任务
Laravel 8 事件订阅者
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

Laravel 8 入门指南

Laravel 8 基础功能

Laravel 8 前端开发

Laravel 8 安全相关

Laravel 8 综合话题

数据库

Eloquent ORM

测试相关

官方拓展包

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }