سؤال

أنا أشرف على مشكلة ، لكن حقًا لا أفهم السبب!

أحصل على هذا الخطأ عند إطلاق Symfony (عبر وحدة التحكم الأمامية أو CLI)

PHP Fatal error:  Declaration of ECommerceKernel::registerContainerConfiguration() must be compatible with that of Symfony\Framework\Kernel::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/Pendor/Symfony إلى أحدث Github's Symfony/Symfony.

هل كانت مفيدة؟

المحلول

هنا لدي!

آسف على الضوضاء ، لكنني اكتشفت خطأي للتو.

يجب أن يكون النوع المصنوع على LoaderInterface $ loader

Symfony\Component\DependencyInjection\Loader\LoaderInterface;

وكنت أستخدم أ

Symfony\Components\DependencyInjection\Loader\LoaderInterface

ظهرت المشكلة منذ ذلك الحين http://github.com/symfony/symfony/commit/bf82cf42dda099f8c0b648b7dbd8e8e7397c1e

عار علي ، لأنني كنت على دراية بهذا (تم الإعلان عن قائمة Symfony-Devs).

المشكلة هي أن PHP interpretr لا يحذرك عندما تحاول استخدام فئة غير ثقيلة.

أو ربما فاتني شيء؟

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top