質問
問題が発生しましたが、その理由がまったくわかりません。
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 インタープリターが警告を出さないことです。
それとも何かを見逃したのでしょうか?
所属していません StackOverflow