events.php 设置命名空间

对 events.php 设置 namespace YourApp;
$worker->eventHandler = 'YourApp\Events';
启动的时候,就会报错 Waring: Events::onMessage is not callable
这是按照文档来的,为什么还是报错呢,这是什么原因
已邀请:

zasray - ITnan

赞同来自: super_yc

我也遇到了这个问题,经过自己摸索,已经 解决。
看了BusinessWorker类中,是通过is_callable函数来判断是否是函数的。
源码如下:
        if (is_callable($this->eventHandler . '::onMessage')) {
            $this->_eventOnMessage = $this->eventHandler . '::onMessage';
        } else {
            echo "Waring: {$this->eventHandler}::onMessage is not callable\n";
        }
这时我们心中的问题就是:那为何我们带入命名空间后还是无法通过is_callable的检测呢?
答案:我们的命名空间没有注册,无法被BusinessWorker发现。
解决方法:在composer.json中注册,代码如下(Application就是我的命名空间,您自己的可以根据实际情况修改Applications(命名空间)文件夹要composer.json同级):
"autoload": {
"psr-4": {
"Applications\\": "Applications/"
}
}

 

damao - phper

赞同来自:

没加载到文件吧

要回复问题请先登录注册