Ошибка Symfony2: несоответствие регистра между загруженными и объявленными именами классов:

Я работаю на Symfony2 и я обновил свой проект с composer.phar update

теперь, когда я проверяю свой сайт с app_dev.php у меня всегда есть эта ошибка :

Case mismatch between loaded and declared class names: BluProjectBun
  dleEntityAccountRepository vs BluProjectBundleEntityAccountRepos
  itory

это то же самое, когда я очищаю кэш dev, вручную или нет. У меня нет ничего особенного в AccountRepository.РНР..

какие идеи ?

Edit : я уже пытался добавить if ($name !== $class && 0 === strcasecmp($name, $class)) { на DebugClassLoader.php и никакого эффекта

6 ответов


намерение var_dump ($name) и var_dump($class) и strcasecmp($name, $class), чтобы узнать, почему вы вводите условие.


хотя ответ был опечаткой в пространстве имен класса, эти ошибки возникают также, если ваша сущность определена через xml, т. е. пользователь.ОЗР.xml, и вы случайно назовете файл в нижнем регистре, это приведет к гайкам загрузчика xml

  1. создать FooNamespace\BarBundle\Resources\config\User.ОЗР.в XML

  2. создать FooNamespace\BarBundle\Entity\User.php (класс User { ... })


Это известная ошибка в Symfony2 :

https://github.com/symfony/symfony/commit/8e9cc35

Он был объединен в 2.5, но еще не помечен (источник)

чтобы проверить, действительно ли это так, вы можете попробовать изменить вручную :

// Line 178
if ($name !== $class && 0 === strcasecmp($name, $class)) {

... и проверьте, если у вас все еще есть проблема после очистки кэша


пожалуйста, добавьте это, если условие в DebugClassLoader.php файл в строке 177

    if ($name === $class) {
        if ($name !== $class && 0 === strcasecmp($name, $class)) {
            throw new \RuntimeException(sprintf('Case mismatch between loaded and declared class names: %s vs %s', $class, $name));
        } 
    }

это решит вашу проблему

расположение: root\Projectname\Symfony\vendor\symfony\symfony\src\Symfony\Component\Debug

спасибо


У меня была эта проблема, и после попытки всех решений, которые я нашел, никто из них не работал на меня. Я работаю с Symfony 2.8, Doctrine ORM и Sonata Admin Bundle, и это исключение появилось, когда я добавил класс admin (для класса, связанного с классом, показанным в сообщении об исключении), и я попытался его открыть.

моей ошибкой было то, что я написал имя таблиц базы данных в нижнем регистре в аннотациях доктрины в связанном классе, проверьте, есть ли у вас это в прописные:

ORM\ManyToOne(targetEntity="Product")

ваше имя контроллера первое слово в нижнем регистре в маршрутизации.в формате YML

usr_teacher_new:
path:     /new
defaults: { _controller: CoreUserBundle:teacher:newteacher }

как учитель..

будет Teacher