Задать вопрос

Как строишь приложения на Symfony2 ты?

Всегда была очень интересна эта тема, давайте делиться опытом!
Например, как вы организовываете тонкие контроллеры при разработке обычных сайтов?
, как вы организовываете тонкие контроллеры при разработке REST API сайтов?
,какой структуры проектов придерживаетесь?
,какие "лайфхаки" можете посоветовать?

В моем случае при построении REST API на Symfony2 я использую JMSSerializer, FOSRest, NelmioApi. В контроллерах все Action у меня идут одной строкой (пример return $this->managerEntity->action(Entity $entity); ) В Action я никогда не принимаю параметр Request $request, т.к обычно в аннотациях получаю все нужные мне данные и заполняю ими объект. Делаю это с помощью ParamConverter, QueryParam. Такой подход на мой взгляд дает более четко понимание того, с чем придется работать. По поводу менеджеров (пример кода выше), у меня они занимаются редиректом на сервис ( иногда еще упаковкой данных в нужные форматы) т.е получают данные с контроллера и вызывает нужные сервисы/репозитории для управление или сохранения данных. Таким образом я получаю удобный для меня уровень абстракции, очень тонкие методы и вполне читаемый код (иногда правда аннотации разрастаются). Так же при разработке REST API я вообще не использую формы, данные валидируются встроенным валидатором от Symfony +правилами описаными в самой сущности

В случае построения "обычных" сайтов т.е с рендером твига и прочим, стараюсь в контроллере оставлять только handle для формы, но и от него ищу всяческие способы избавиться.

P.S best practices читал, бандлы популярные смотрел, но даже в них очень часто код выглядят не самым приятным образом и иногда создается впечатление, что вся красота ооп иногда проходит мимо php
P.S vol. 2 если есть ссылки на проекты на git'е написаны (по вашему мнению) в хорошем стиле, было бы круто выложить их сюда


Добавлено 9.2.15
----------------------------------------------------
Сюда буду добавлять примеры "хорошо" написанных бандлов/сайтов на Symfony2, что бы можно было брать как пример

https://github.com/orocrm/platform

Добавлено 12.2.15
E-commerce solution build on top of symfony
https://github.com/elcodi/elcodi
  • Вопрос задан
  • 4963 просмотра
Подписаться 21 Оценить 8 комментариев
Ответ пользователя Алексей Романенко К ответам на вопрос (4)
slimus
@slimus
Symfony, Golang
По поводу тонких контроллеров. Разбирался в одном проекте, было около 50 сервисов написанных для него. Контроллеры получились тоже примерно однострочные, но вся логика в сервисах была адово запутана. Но разобраться в таком коде можно, и мне потребовалось всего пара часов чтобы я понимал именование сервисов и файлов.
Поделитесь опытом как Вы строите запросы для апи где есть сортировка+постраничник+множество фильтров? Какую логику куда выносите? Как выглядят репозитории?
Спасибо!
Ответ написан