0

我遇到了一个问题,但真的不明白为什么!

启动 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 之后。

4

1 回答 1

1

我这里有!

对不起,我刚刚发现了我的错误。

LoaderInterface $loader 上的类型提示必须是

Symfony\Component\DependencyInjection\Loader\LoaderInterface;

我正在使用

Symfony\Components\DependencyInjection\Loader\LoaderInterface

问题出现自http://github.com/symfony/symfony/commit/bf82cf42dda099f8c0b6648b7dbd8e8ea7397c1e

让我感到羞耻,因为我知道这一点(它已在 symfony-devs 列表中公布)。

问题是当您尝试使用不存在的类时,PHP 解释器不会警告您。

或者我错过了什么?

于 2010-08-27T08:05:31.710 回答