Несовместимый метод ядра подпись
Вопрос
Я беру проблему, но действительно не понимаю, почему!
Я получаю эту ошибку при запуске Symfony (через передний контроллер или CLI)
PHP Fatal error: Declaration of ECommerceKernel::registerContainerConfiguration() must be compatible with that of Symfony\Framework\Kernel::registerContainerConfiguration()
Проблема заключается в переопределении метода регистрации RecisterContainerConfigration.
Это подпись определена в 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 до последнего Symfony Github / Symfony.
Решение
Вот у меня есть!
Извините за шум, но я просто обнаружил свою ошибку.
Тип намекания, сделанный на LoaderInterFace $ Loader, должен быть
Symfony\Component\DependencyInjection\Loader\LoaderInterface;
и я использовал
Symfony\Components\DependencyInjection\Loader\LoaderInterface
Проблема появилась с http://github.com/symfony/symfony/commit/bf82cf42dda099f8c0b6648b7dbd8e8ea7397c1e.
Позор на мне, потому что я знал об этом (было объявлено INT Список Symfony-Devs).
Проблема в том, что PHP-интерфейс не предупреждает вас, когда вы пытаетесь использовать невыпущенное класс.
Или, может быть, я что-то пропустил?