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

我的理解是事件和监听器注册之后,触发事件会主动走监听器的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
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
GDDD
最佳答案

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

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

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

2年前 评论
GDDD (作者) 2年前
BlueDestiny (楼主) 2年前
GDDD (作者) 2年前
BlueDestiny (楼主) 2年前
BlueDestiny (楼主) 2年前
Su 2年前
BlueDestiny (楼主) 2年前
随波逐流 2年前
天上白玉京

事件系统 是不是看错了

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

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

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

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

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

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