PHP7带接口的类型错误

时间:2017-12-31 12:52:39

标签: php symfony

在我的symfony项目中,我收到了供应商的错误。

  

致命错误:未捕获Symfony \ Component \ Debug \ Exception \ FatalThrowableError:类型错误:参数1传递给eZ \ Publish \ Core \ MVC \ Legacy \ Kernel \ Loader :: setCLIHandler()必须实现接口ezpKernelHandler,eZ实例\ Publish \ Core \ MVC \ Legacy \ Kernel \ CLIHandler,在/ Users / 2314行/Users/steve/Projects/Web/BuildSuccess/www/vendor/ezsystems/legacy-bridge/mvc/Kernel/Loader.php中调用/steve/Projects/Web/BuildSuccess/www/vendor/ezsystems/legacy-bridge/mvc/Kernel/Loader.php:255

但是这个错误很奇怪因为我检查过并且eZ \ Publish \ Core \ MVC \ Legacy \ Kernel \ CLIHandler实现了接口ezpKernelHandler!

namespace eZ\Publish\Core\MVC\Legacy\Kernel;

use ezpKernelHandler;

class CLIHandler implements ezpKernelHandler
{
   ...
}

我尝试使用 get_class 方法进行调试,然后我得到

"eZ\Publish\Core\MVC\Legacy\Kernel\CLIHandler"

我还使用了 class_implements 方法,我得到了

array(0) {
}

知道追加什么吗?

由于

2 个答案:

答案 0 :(得分:1)

我发现这不是你的代码,而是eZ Publish本身。因此,您不太可能更新来源,但仍有一些事情可以做:

  1. 检查Composer自动加载器配置,以确定ezpKernelHandler类已正确解析。您可能需要为其注册自定义自动加载器。

  2. 您最有可能收到此错误,因为您使用的是Symfony 3.3+及其最近添加的services auto-configuration功能。您可以通过禁用受影响服务的服务自动配置来避免抛出此错误,请查看示例here

  3. 由于此错误是致命的,但可以捕获 - 如果没有其他任何帮助,您可以为此特定服务创建自己的服务工厂并在其中捕获错误。

答案 1 :(得分:0)

修正:https://github.com/ezsystems/LegacyBridge/issues/132

  

通过创建app / autoload.php文件可以轻松修复,该文件需要vendor / autoload.php和ezpublish_legacy / autoload.php并更改bin / console以要求该文件而不是vendor / autoload.php