我正在困扰一个问题,但真的不明白为什么!
启动Symfony(通过前端控制器或CLI)时出现此错误
PHP Fatal error: Declaration of ECommerceKernel::registerContainerConfiguration() must be compatible with that of Symfony\Framework\Kernel::registerContainerConfiguration()
问题是覆盖registerContainerConfiguration方法。
它的签名在Symfony \ Framework \ Kernel:
中定义abstract public function registerContainerConfiguration(LoaderInterface $loader);
我的覆盖方法如下所示:
// in ECommerceKernel
public function registerContainerConfiguration(LoaderInterface $loader)
{
$return = $loader->load(__DIR__.'/config/config_'.$this->getEnvironment().'.yml');
$em = $this->getContainer()->getDoctrine_Orm_EntityManagerService();
$dm = $this->getContainer()->getDoctrine_Odm_Mongodb_DocumentManagerService();
$eventManager = $em->getEventManager();
$eventManager->addEventListener(
array(\Doctrine\ORM\Events::postLoad), new ECommerceEventSubscriber($dm)
);
return $return;
}
我的问题:这里到底发生了什么?我真的无法理解错误,因为方法签名完全相同。
这是在srv / vendor / symfony升级到最新的github的symfony / symfony之后发生的。
答案 0 :(得分:1)
我来了!
对不起噪音,但我发现了我的错误。
在LoaderInterface $ loader上进行的类型提示必须是
Symfony\Component\DependencyInjection\Loader\LoaderInterface;
我正在使用
Symfony\Components\DependencyInjection\Loader\LoaderInterface
问题出现在http://github.com/symfony/symfony/commit/bf82cf42dda099f8c0b6648b7dbd8e8ea7397c1e
之后对我感到羞耻,因为我知道这件事(已在symfony-devs列表中公布)。
问题是,当您尝试使用不熟练的类时,PHP解释器不会发出警告。
或许我错过了什么?