@KuzmenkoArtem

Какой тип маршрутизации в Symfony лучше использовать?

Указание маршрута в PHP аннотациях или указание маршрутов в YAML ?
  • Вопрос задан
  • 387 просмотров
Пригласить эксперта
Ответы на вопрос 3
Decadal
@Decadal
Если у вас большое количество роутов, используйте yaml - так они будут собраны в одном месте и наглядны. Более простой и быстрый способ - аннотации, но они при большом количестве роутов могут путать.
Подробнее можно почитать здесь
а здесь посмотреть на английском
И документация
Ответ написан
Комментировать
skobkin
@skobkin
Гентушник, разработчик на PHP и Symfony.
Я предпочитаю YAML.
В сущностях довольно удобно держать аннотации, т.к. при правильном подходе работа идёт от объектов, а не от таблиц. Это редко может помешать.
В случае с контроллерами же вполне может быть необходимость сходу понять "а куда мы придём в нашем приложении, если пойдём по такому-то адресу". И когда маршруты разбросаны по куче контроллеров, это сделать довольно затруднительно. Хорошо это работает только в обратную сторону: "а какой у нас адрес для этого экшена".
Так вот в случае использования YAML и плагина для IDE, который позволяет в один клик скакнуть от кода экшена к описанию маршрута или наоборот, YAML позволяет быстро отвечать и на первый и на второй вопрос.

Кроме того рекомендую ознакомиться с Symfony Best Practices, чтобы много вопросов "а как лучше" отпало. И да, как вы сможете заметить читая их, мой выбор YAML расходится с предложенной практикой. Но аргументацию см. выше.
Ответ написан
voronkovich
@voronkovich
Просуммирую сказанное в комментариях:

Плюсы аннотаций:
  • можно быстро писать код, прототипировать (особенно если используете сниппеты), т.к. и описание маршрута и код находятся в одном месте.

Минусы аннотаций:
  • Невозможно "окинуть взгядом" (в YAML это проще);
  • Иногда (очень редко) из-за них нужно менять порядок следования action-методов в контроллере т.к. нужно чтобы какой-то маршрут "срабатывал раньше".

Стоит отметить, что по возможностям и аннотации и yaml -одинаковы.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы