Ответ 1
Я только что установил новую копию S3.3.4 (последняя версия на момент написания этой статьи), используя:
composer create-project symfony/framework-standard-edition s334 "3.3.4"
bin/console generate:bundle
Share across multiple apps: yes
namespace: Paul\ArtBundle
bundle name: PaulArtBundle
Target Directory: src/
Обновлен браузер и, конечно же, я получил сообщение о не найденном классе.
Команда generate: bundle не обновляет раздел autload для composer.json, когда вводится новое пространство имен. Измените композитор .json и:
# composer.json
"autoload": {
"psr-4": {
"AppBundle\\": "src/AppBundle",
"Paul\\": "src/Paul"
},
"classmap": [ "app/AppKernel.php", "app/AppCache.php" ]
},
Затем запустите
composer dumpautoload
И перезапустите сервер (возможно). Это должно устранить неполадку класса пакета.
Я не использовал команду generate: bundle довольно давно, поскольку стандарт должен был помещать все под AppBundle, поэтому я не знаю, как долго это было "сломано". Но по крайней мере три вопроса на прошлой неделе или около того указывают, что это было что-то недавнее.
И, кстати, когда я обновил браузер, я получил "Hello World", который бросил меня немного. Оказывается, новый пакет переопределяет маршрут /, который также является особым.
И если кто-то задается вопросом, почему это произошло, Symfony 3.2 изменилась с
#composer.json
"psr-4": { "": "src/" },
To
"psr-4": { "AppBundle\\": "src/AppBundle" },
Вы всегда можете просто изменить его, хотя я считаю, что отдельные пространства имен могут быть "лучше". Не уверен.
И вот проблема с более подробной информацией: https://github.com/symfony/symfony-standard/issues/1098
Похоже, что сопровождающий предпочитает небольшое улучшение скорости, нарушая существующую команду. Ну что ж. Symfony Flex, как предполагается, сделает все отлично снова.