#php #symfony2
Здравствуйте! В данный момент я изучаю Symfony 2 и предо мной встала такая дилема: Как лучше хранить routes для контроллеров? Да, я понимаю что этот вопрос с немного холиварным подтекстом, ибо на вкус и цвет... Но все же меня интересует этот вопрос с точки зрения огранизации средних/больших приложений. Приведу свои размышления: Насколько мне известно, Symfony имеет 2 основных варианта хранения routes В конфигах (routing.yml, routing.xml и тд), возможно также подключать routing из бандлов. В аннотациях Наиболее удобным мне кажется вариант с аннотациями, но когда контроллеров и методов станет много, скажем 50+, возникнет сложность определения что и где находится, и как следствие усложнение разработки и дебага. Также приемлемым мне кажется складывать routes в routing файлы каждого бандла. В этом случае будет удобно повторно использовать бандлы в других проектах, и зная за какой функционал отвечает определенный бандл, искать нужные роуты. Но все же при большом количестве бандлов это может стать проблемой. Третий вариант - это хранить все роуты в app/config/routing.yml. Но это усложнит повторное использование бандлов. И, почему-то, мне этот вариант интуитивно не нравится. Со стороны может показаться что я задал вопрос и сам же на него ответил. Это не так. Я вижу эти варианты, но не знаю какой и когда лучше использовать, так как нет опыта сколько-нибудь серьезной разработки на Symfony. Буду рад и благодарен любому мнений, и в двойне - мнению аргументированному.
Ответы
Ответ 1
Использую Symfony два года, на 4 проектах. В первых двух использовал конфигурирование маршрутов в yaml-файле, на третьем решил попробовать аннотации. Понял, что использование аннотаций гораздо удобнее, хотя поначалу думал "как хорошо когда все маршруты в одном файле". Совсем наоборот. Как минимум, при создании нового контроллера приходится что-то делать в двух файлах, а с аннотациями - ctrl+c - ctrl+v в одном файле, чуть переименовал и готово. Если строго следовать именованию файлов и маршрутов - никаких проблем с нахождением нужного контроллера не возникает. Тем более в IDE, где просто по имени роута в шаблоне тыкнул и ты уже в контроллере. С точки зрения производительности: на первом проекте активно курил доки и рекомендации с аналогичным вашему вопросом. Вычитал где-то, что yaml-файлы производительнее. Но на деле никакой заметной разницы нет, все в любом случае хорошо кешируется и готово к употреблению движком "в лучшем виде". Добавлю еще, что проекты достаточно крупные, чтобы различия в использовании подходов были заметны. Так вот с yaml-файлом неприятнее: огромная портянка на 1.5к строк, в которой и нужное и ненужное и хочется еще соблюдать какой-то порядок и разделять комментами на разделы, чтобы приличнее было... А с аннотациями все на своем месте, всегда под рукой, никакой каши.Ответ 2
Сами разработчики в своих Best Practice предлагают использовать конфигурирование маршрутов, кэширования и безопасности через аннотации: Make your controller extend the FrameworkBundle base controller and use annotations to configure routing, caching and security whenever possible. и я с ними полностью согласен. Очень удобно, когда конфигурация находится в одном месте с кодом, а по быстродействию - нет никакой разницы. In addition, using annotations for routing, caching and security simplifies configuration. You don't need to browse tens of files created with different formats (YAML, XML, PHP): all the configuration is just where you need it and it only uses one format.
Комментариев нет:
Отправить комментарий