2014-06-17 5 views
7

Ich bin auf Symfony2 arbeiten, und ich mein Projekt aktualisiert mit composer.phar updateSymfony2 Fehler: Case Mismatch zwischen geladenen und erklärt Klassennamen:

Nun, wenn ich meine Website überprüfen mit app_dev.php ich habe immer diesen Fehler:

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

Es ist das gleiche, wenn ich den Dev-Cache manuell oder nicht lösche. Ich habe nichts besonderes in AccountRepository.php ..

Irgendwelche Ideen?

Edit: Ich habe bereits versucht if ($name !== $class && 0 === strcasecmp($name, $class)) { in DebugClassLoader.php und keinen Effekt hinzufügen

+2

sieht aus wie in der Datei geschrieben seine kleinen zB -> Klasse accountRepository {} –

+0

Ich habe nichts Besonderes in dieser Datei –

Antwort

5

Intent to var_dump ($ name) und var_dump ($ class) und strcasecmp ($ name, $ class) müssen zu sehen, warum trittst du in den Zustand ein.

+1

Danke, ich habe gerade einen Fall in meinem Namensraum vergessen .. –

1

Dies ist ein bekannter Fehler in Symfony2:

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

Es in 2.5 verschmolzen wurde, aber noch nicht markiert (source)

Um zu überprüfen, ob dies wirklich der Fall für Sie ist, möchten Sie vielleicht versuchen, die src/Symfony/Component/Debug/DebugClassLoader.php Datei manuell zu ändern:

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

... und überprüfen Sie, ob Sie immer noch das Problem nach dem Löschen des Cache

+0

I habe dieses Ding schon versucht, und ich habe immer diesen Fehler;) –

+0

In Ihrem Fehler sagt es nicht "' in file_XX bei Zeile YY' "zu versuchen, das Problem aufzuspüren? – tchap

2

Obwohl die Antwort ein Tippfehler im Klassennamespace ist, tritt dieser Fehler auch auf, wenn Ihre Entität über xml, dh User.orm.xml, definiert ist und Sie versehentlich die Datei in Kleinbuchstaben umbenennen

loader
  1. erstellen FooNamespace \ BarBundle \ Resources \ config \ User.orm.xml

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

1

Bitte diese hinzufügen, wenn die Bedingung in DebugClassLoader.php in Zeile 177

Datei
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)); 
     } 
    } 

Es wird Ihr Problem

Ort lösen: root\Projectname\Symfony\vendor\symfony\symfony\src\Symfony\Component\Debug

dank

1

Ich hatte dieses Problem und schließlich versuchen, Die Lösungen, die ich fand, keiner von ihnen arbeitete für mich. Ich arbeite mit Symfony 2.8, Doctrine ORM und Sonata Admin Bundle und diese Ausnahme erschien, als ich eine Admin-Klasse (für eine Klasse mit der Klasse in der Ausnahmebedingungsnachricht verbunden) hinzugefügt und ich habe versucht, es zu öffnen.

Mein Fehler war ich den Namen der Datenbanktabellen in Klein in Lehre Anmerkungen in der Klasse schrieb im Zusammenhang, wenn Sie es in Großbuchstaben haben:

ORM\ManyToOne(targetEntity="Product") 
1

Ihr Controller Name erstes Wort in Ihrem Routing klein geschrieben wird .yml

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

wie Lehrer ..

wird T eacher