Несовместимая подпись метода ядра - PullRequest
0 голосов
/ 27 августа 2010

Я решаю проблему, но действительно не понимаю, почему!

Я получаю эту ошибку при запуске 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's symfony / symfony.

1 Ответ

1 голос
/ 27 августа 2010

Вот оно у меня!

Извините за шум, но я только что обнаружил свою ошибку.

Типовая подсказка, сделанная на LoaderInterface $ loader, должна быть

Symfony\Component\DependencyInjection\Loader\LoaderInterface;

и я использовал

Symfony\Components\DependencyInjection\Loader\LoaderInterface

Проблема появилась с http://github.com/symfony/symfony/commit/bf82cf42dda099f8c0b6648b7dbd8e8ea7397c1e

Позор мне, потому что я знал об этом (это было объявлено в списке symfony-devs).

проблема в том, что PHP интерпретатор не предупреждает вас, когда вы пытаетесь использовать неинтересный класс.

Или, может быть, я что-то пропустил?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...