请问事件为什么没触发监听器的逻辑?

我的理解是事件和监听器注册之后,触发事件会主动走监听器的handle方法,可是测试了一下,好像完全都没监听器什么事。。。

我的代码是这样

//注册事件和监听器
TestEvent::class => [
     TestListener::class,
],
//事件
public function __construct()
{
    echo '事件构造器函数<br>';
}

public function broadcastOn()
{
    echo '事件方法<br>';
    return new PrivateChannel('channel-name');
}
//监听器
public function __construct()
{
    echo '监听器构造函数<br>';
}

public function handle(TestEvent $event)
{
    echo '监听器方法<br>';
}
//控制器中触发事件
public function event(){
    echo "begin <br>";
    TestEvent::dispatch();
    //event(new TestEvent());
    echo "end";
}
//我预想的结果
begin
事件构造器函数
监听器构造函数
监听器方法
end


//实际的结果
begin
事件构造器函数
end
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
GDDD
最佳答案

你看错文档了?dispatch()是分发任务的。要分发事件用event()。 event(new TestEvent());

3年前 评论
GDDD (作者) 3年前
BlueDestiny (楼主) 3年前
GDDD (作者) 3年前
BlueDestiny (楼主) 3年前
BlueDestiny (楼主) 3年前
Su 3年前
BlueDestiny (楼主) 3年前
随波逐流 3年前
讨论数量: 6
GDDD

你看错文档了?dispatch()是分发任务的。要分发事件用event()。 event(new TestEvent());

3年前 评论
GDDD (作者) 3年前
BlueDestiny (楼主) 3年前
GDDD (作者) 3年前
BlueDestiny (楼主) 3年前
BlueDestiny (楼主) 3年前
Su 3年前
BlueDestiny (楼主) 3年前
随波逐流 3年前

事件系统 是不是看错了

3年前 评论
BlueDestiny (楼主) 3年前
 有没有试着去重启队列 
 php artisan queue:restart
3年前 评论
BlueDestiny (楼主) 3年前
composer dump-autoload
3年前 评论
BlueDestiny (楼主) 3年前
LiamHao (作者) 3年前
BlueDestiny (楼主) 3年前

SomeEvent::dispatch() 和使用 event(new SomeEvent) 是一样的。可以看到,dispatch() 实际上调用的还是 event() 函数。

    public static function dispatch()
    {
        return event(new static(...func_get_args()));
    }

不过,虽然 event 和 job 都可以调 dispatch(),但是此 dispatch() 非彼 dispatch()

3年前 评论
BlueDestiny (楼主) 3年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!