Всегда была очень интересна эта тема, давайте делиться опытом!
Например,
как вы организовываете тонкие контроллеры при разработке обычных сайтов?
,
как вы организовываете тонкие контроллеры при разработке 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