Страницы

Поиск по вопросам

пятница, 5 апреля 2019 г.

Правильный подход к организации хранения routes в Symfony

Здравствуйте!
В данный момент я изучаю Symfony 2 и предо мной встала такая дилема:
Как лучше хранить routes для контроллеров?
Да, я понимаю что этот вопрос с немного холиварным подтекстом, ибо на вкус и цвет... Но все же меня интересует этот вопрос с точки зрения огранизации средних/больших приложений.
Приведу свои размышления:
Насколько мне известно, Symfony имеет 2 основных варианта хранения routes
В конфигах (routing.yml, routing.xml и тд), возможно также подключать routing из бандлов. В аннотациях
Наиболее удобным мне кажется вариант с аннотациями, но когда контроллеров и методов станет много, скажем 50+, возникнет сложность определения что и где находится, и как следствие усложнение разработки и дебага.
Также приемлемым мне кажется складывать routes в routing файлы каждого бандла. В этом случае будет удобно повторно использовать бандлы в других проектах, и зная за какой функционал отвечает определенный бандл, искать нужные роуты. Но все же при большом количестве бандлов это может стать проблемой.
Третий вариант - это хранить все роуты в app/config/routing.yml. Но это усложнит повторное использование бандлов. И, почему-то, мне этот вариант интуитивно не нравится.
Со стороны может показаться что я задал вопрос и сам же на него ответил. Это не так. Я вижу эти варианты, но не знаю какой и когда лучше использовать, так как нет опыта сколько-нибудь серьезной разработки на Symfony.
Буду рад и благодарен любому мнений, и в двойне - мнению аргументированному.


Ответ

Использую Symfony два года, на 4 проектах. В первых двух использовал конфигурирование маршрутов в yaml-файле, на третьем решил попробовать аннотации. Понял, что использование аннотаций гораздо удобнее, хотя поначалу думал "как хорошо когда все маршруты в одном файле". Совсем наоборот. Как минимум, при создании нового контроллера приходится что-то делать в двух файлах, а с аннотациями - ctrl+c - ctrl+v в одном файле, чуть переименовал и готово. Если строго следовать именованию файлов и маршрутов - никаких проблем с нахождением нужного контроллера не возникает. Тем более в IDE, где просто по имени роута в шаблоне тыкнул и ты уже в контроллере.
С точки зрения производительности: на первом проекте активно курил доки и рекомендации с аналогичным вашему вопросом. Вычитал где-то, что yaml-файлы производительнее. Но на деле никакой заметной разницы нет, все в любом случае хорошо кешируется и готово к употреблению движком "в лучшем виде".
Добавлю еще, что проекты достаточно крупные, чтобы различия в использовании подходов были заметны. Так вот с yaml-файлом неприятнее: огромная портянка на 1.5к строк, в которой и нужное и ненужное и хочется еще соблюдать какой-то порядок и разделять комментами на разделы, чтобы приличнее было... А с аннотациями все на своем месте, всегда под рукой, никакой каши.

Комментариев нет:

Отправить комментарий