Incompatible signature de la méthode du noyau
Question
J'encoutering un problème, mais ne comprends vraiment pas pourquoi!
Je reçois cette erreur lors du lancement Symfony (via le contrôleur frontal ou CLI)
PHP Fatal error: Declaration of ECommerceKernel::registerContainerConfiguration() must be compatible with that of Symfony\Framework\Kernel::registerContainerConfiguration()
Le problème est la substitution de la méthode de registerContainerConfiguration.
de signature est défini dans Symfony \ Framework \ noyau:
abstract public function registerContainerConfiguration(LoaderInterface $loader);
mes regards méthode comme celle-ci écrasés:
// 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;
}
Ma question: Qu'est-ce qui se passe vraiment ici? Je ne comprends vraiment pas l'erreur parce que les signatures de méthode sont exactement les mêmes.
Ceci est arrivé après un srv / vendor / symfony mise à jour vers symfony / symfony de la dernière github.
La solution
Ici, je l'ai!
Désolé pour le bruit, mais je viens de découvrir mon erreur.
Le type hinting fait sur LoaderInterface chargeur $ doit être
Symfony\Component\DependencyInjection\Loader\LoaderInterface;
et je travaillais avec un
Symfony\Components\DependencyInjection\Loader\LoaderInterface
Le problème est apparu depuis http://github.com/symfony/symfony/commit/bf82cf42dda099f8c0b6648b7dbd8e8ea7397c1e
Honte à moi, parce que j'étais au courant de ce (il a été annoncé int la liste de symfony-devs).
le problème est que PHP interpretr ne vous avertit pas lorsque vous essayez d'utiliser une classe inexisiting.
Ou peut-être que je raté quelque chose?