Maison >développement back-end >tutoriel php >Symfony 3 : Pourquoi obtenir une ClassNotFoundException après avoir généré un bundle avec un espace de noms personnalisé ?

Symfony 3 : Pourquoi obtenir une ClassNotFoundException après avoir généré un bundle avec un espace de noms personnalisé ?

DDD
DDDoriginal
2024-11-27 03:55:11559parcourir

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

Exception de classe Symfony3 introuvable après la création du bundle

Lors de la création d'un nouveau bundle dans Symfony3 à l'aide de la commande generate:bundle, vous pouvez rencontrer un ClassNotFoundException pour le bundle nouvellement créé. Ce problème survient spécifiquement lorsqu'un espace de noms personnalisé est introduit lors de la création du bundle.

La cause première réside dans le fait que la commande generate:bundle néglige de mettre à jour la section de chargement automatique de composer.json pour inclure le nouvel espace de noms. Par conséquent, le chargeur automatique ne parvient pas à localiser la classe du bundle au redémarrage du serveur.

Pour résoudre ce problème, modifiez manuellement composer.json et ajoutez le code suivant dans la section psr-4 :

"Paul\": "src/Paul"

Cela indique au chargeur automatique où trouver l'espace de noms Paul dans le répertoire src.

Une fois composer.json mis à jour, exécutez ce qui suit commandes pour actualiser l'autochargeur et redémarrer le serveur (si nécessaire) :

composer dumpautoload

Après ces étapes, l'exception ClassNotFoundException devrait être résolue et le bundle est accessible comme prévu.

Points supplémentaires :

  • Ce problème a commencé à se produire après que Symfony 3.2 a modifié le psr-4 par défaut Mappage d'espace de noms de "" vers AppBundle\.
  • Si vous le souhaitez, vous pouvez revenir à l'ancien mappage d'espace de noms en modifiant composer.json.
  • Pour des informations plus détaillées, reportez-vous au problème GitHub : https https://github.com/symfony/symfony-standard/issues/1098

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn