Clément Andraud
Clément Andraud

Reputation: 9269

Symfony2 error : Case mismatch between loaded and declared class names:

I'm working on Symfony2 and i updated my project with composer.phar update

Now, when i check my site with app_dev.php i always have this error :

Case mismatch between loaded and declared class names: Blu\ProjectBun
  dle\Entity\AccountRepository vs Blu\ProjectBundle\Entity\AccountRepos
  itory

It's the same when i clear the dev cache, manually or not. I have nothing special in AccountRepository.php..

Any ideas ?

Edit : I already tried to add if ($name !== $class && 0 === strcasecmp($name, $class)) { in DebugClassLoader.php and no effect

Upvotes: 10

Views: 18575

Answers (6)

Mehmet Emre Vural
Mehmet Emre Vural

Reputation: 388

Your controller name first word is lowercase in your routing.yml

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

like teacher..

will be Teacher

Upvotes: 1

rsister88
rsister88

Reputation: 31

I had this problem and after trying all the solutions I found, no one of them worked for me. I am working with Symfony 2.8, Doctrine ORM and Sonata Admin Bundle and this exception appeared when I added an admin class (for a class related with the class showed in the exception message) and I tried to open it.

My mistake was I wrote the name of the database tables in lowercase in Doctrine annotations in the class related, check if you have it in uppercase:

ORM\ManyToOne(targetEntity="Product")

Upvotes: 3

Rakesh kumar
Rakesh kumar

Reputation: 11

Please Add this if condition in DebugClassLoader.php File at line 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));
        } 
    }

It will solve your problem

Location: root\Projectname\Symfony\vendor\symfony\symfony\src\Symfony\Component\Debug

thanks

Upvotes: 1

ROLO
ROLO

Reputation: 581

though the answer was a typo in the class namespace, this errors occurs also if your entity is defined via xml, i.e. User.orm.xml, and you accidentally name the file lower-case, this will drive nuts the xml loader

  1. create FooNamespace\BarBundle\Resources\config\User.orm.xml

  2. create FooNamespace\BarBundle\Entity\User.php (class User { ... })

Upvotes: 3

psylo66
psylo66

Reputation: 628

Intent to var_dump($name) and var_dump($class) and strcasecmp($name, $class) to see why you enter in the condition.

Upvotes: 6

tchap
tchap

Reputation: 3432

This is a known bug in Symfony2 :

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

It has been merged in 2.5 but not tagged yet (source)

To check if this is really the case for you, you might want to try modifying the src/Symfony/Component/Debug/DebugClassLoader.php file manually :

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

... and check if you still have the problem after clearing your cache

Upvotes: 1

Related Questions