Мне было немного любопытно посмотреть, что именно нужно для работы такого рода в Symfony 5.
Начните с загрузки пяти пакетов:
composer require symfony/routing
composer require symfony/config
composer require symfony/framework-bundle
composer require doctrine/annotations
composer require doctrine/cache
Затем вы необходимо настроить composer. json для автоматической загрузки классов вашего приложения:
# composer.json
"autoload": {
"psr-4": {
"App\\": "app/"
}
}
И, конечно, запустить "composer dump-autoload".
Затем я сделал тестовый контроллер:
# app/Controller/DefaultController.php
namespace App\Controller;
use Symfony\Component\Routing\Annotation\Route;
class DefaultController
{
/**
* @Route("/",name="index")
*/
public function index()
{
}
/**
* @Route("/hello",name="hello")
*/
public function hello()
{
}
}
После этого код загрузки в вопросе работал как положено. Поэтому я не буду повторять это здесь.
Немного странно, что Symfony все еще полагается на Doctrine, чтобы выполнить некоторую часть обработки аннотаций. Важно отметить, что метод AnnotationRegistry :: registerLoader устарел, поэтому код необходимо будет настроить, когда Doctrine будет в конечном итоге обновлен до 3.x. Или, возможно, аннотации Doctrine будут удалены.
Еще один позор заключается в том, что класс AnnotatedRouteControllerLoader требует загрузки всего пакета Symfony framework. Сам класс просто заботится об установке атрибута маршрута _controller. Возможно, стоит скопировать класс в собственное приложение и, таким образом, устранить необходимость перетаскивания полного пакета.