Symfony 3: Warum eine ClassNotFoundException erhalten, nachdem ein Bundle mit einem benutzerdefinierten Namespace generiert wurde?

DDD
Freigeben: 2024-11-27 03:55:11
Original
475 Leute haben es durchsucht

Symfony 3: Why Get a ClassNotFoundException After Generating a Bundle with a Custom Namespace?

Ausnahme „Symfony3-Klasse nicht gefunden“ nach Bundle-Erstellung

Beim Erstellen eines neuen Bundles in Symfony3 mit dem Befehl „generate:bundle“ kann es zu einer Fehlermeldung kommen ClassNotFoundException für das neu erstellte Bundle. Dieses Problem tritt insbesondere dann auf, wenn während der Bundle-Erstellung ein benutzerdefinierter Namespace eingeführt wird.

Die Hauptursache liegt in der Tatsache, dass der Befehl „generate:bundle“ es versäumt, den Autoload-Abschnitt von Composer.json zu aktualisieren, um den neuen Namespace einzuschließen. Folglich kann der Autoloader die Bundle-Klasse nicht finden, wenn der Server neu gestartet wird.

Um dieses Problem zu beheben, bearbeiten Sie „composer.json“ manuell und fügen Sie den folgenden Code im Abschnitt „psr-4“ hinzu:

"Paul\": "src/Paul"
Nach dem Login kopieren

Dadurch wird dem Autoloader mitgeteilt, wo sich der Paul-Namespace im src-Verzeichnis befindet.

Sobald „composer.json“ aktualisiert wurde, führen Sie Folgendes aus Befehle zum Aktualisieren des Autoloaders und zum Neustarten des Servers (falls erforderlich):

composer dumpautoload
Nach dem Login kopieren

Nach diesen Schritten sollte die ClassNotFoundException behoben sein und auf das Bundle kann wie erwartet zugegriffen werden.

Zusätzliche Punkte:

  • Dieses Problem trat erstmals auf, nachdem Symfony 3.2 die Standardeinstellung geändert hatte psr-4-Namespace-Zuordnung von „“ zu AppBundle\.
  • Bei Bedarf können Sie zur alten Namespace-Zuordnung zurückkehren, indem Sie „composer.json“ ändern.
  • Ausführlichere Informationen finden Sie im GitHub Problem: https://github.com/symfony/symfony-standard/issues/1098

Das obige ist der detaillierte Inhalt vonSymfony 3: Warum eine ClassNotFoundException erhalten, nachdem ein Bundle mit einem benutzerdefinierten Namespace generiert wurde?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage