質問

問題が発生しましたが、その理由がまったくわかりません。

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 にアップグレードした後に発生しました。

役に立ちましたか?

解決

ここにあります!

騒がしくて申し訳ありませんが、今間違いに気づきました。

LoaderInterface $loader で行われる型ヒントは、

Symfony\Component\DependencyInjection\Loader\LoaderInterface;

そして私は

Symfony\Components\DependencyInjection\Loader\LoaderInterface

問題が発生してから http://github.com/symfony/symfony/commit/bf82cf42dda099f8c0b6648b7dbd8e8ea7397c1e

残念です。私はこれに気づいていました (symfony-devs リストで発表されています)。

問題は、存在しないクラスを使用しようとしても、PHP インタープリターが警告を出さないことです。

それとも何かを見逃したのでしょうか?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top