Rakovskiy, Когда будем любоваться?
Rakovskiy, Какую логику и почему?
Вот посмотри сюда например:
https://github.com/Kilte/leich ... ource
Вся логика пишется один раз, далее под неё пишутся интерфейсы, будь то REST API, JSON-RPC или просто контроллёры, возвращающие отрендеренные шаблоны.
Почитай ещё вот эту статейку:
http://php-and-symfony.matthia ... uses/
Думаю все вопросы отпадут.
reaper, Вот у меня "просто контроллёры, возвращающие отрендеренные шаблоны", а что бы вернуть мне потом к примеру json данные то нужно переписывать все контроллеры, убирать рендер шаблонов и возвращать json
# Rakovskiy (01.04.2015 / 23:23)
reaper, Вот у меня "просто контроллёры, возвращающие отрендеренные шаблоны", а что бы вернуть мне потом к примеру json данные то нужно переписывать все контроллеры, убирать рендер шаблонов и возвраща
В твоём случае (с Yii) нужно вынести бизнес логику в сервисный слой, что бы контроллеры получились максимально "тонкими".
Ну а потом просто плодить их под каждую задачу, т.е UserController - это "просто контроллер", UserApiController - это REST сервис.
Rakovskiy, Если ты собрался делать REST API, то оно у тебя должно быть доступно по урле с каким-нибудь специальным префиксом. Например
http://megasocialengine.com/api/v1/
Есть ещё куча рекомендаций по организации урлов, версионированию, это наиболее распространённое решение.
Трогать существующие контроллёры тебе вообще не нужно. В случае с Yii, предполагаю, что тебе нужно запилить новые, специально для API. Если ты читал про CommandBus, то скорее всего уже догадался, что в контроллёре достаточно отправить команду на обработку шиной и вернуть полученный ответ в нужном формате. Хотя на мой взгляд пилить отдельные контроллёры плохая мысль, если логика будет один в один. В таком случае имеет смысл завести какую-нибудь мидлу или обработчик события, которое происходит при получении ответа из контроллёра и дальше уже определять, в каком формате отдавать.
Я не знаю Yii, может там уже есть решение для этой проблемы, может быть есть какое-то стороннее. В Symfony это делается очень просто. Вот например:
http://vermillion.readthedocs. ... .html
В League/Route пошли дальше и запилили целые стратегии:
http://route.thephpleague.com/ ... gies/
Я, вдохновившись этим концептом решил во второй версии Vermillion запилить нечто подобное.
В Laravel кстати, если мне не изменяет память, уже запилили подобную фичу.
Ну вот как реализованы рест контроллеры в Yii
https://github.com/yiisoft/yii ... rs.md
# L!MP (01.04.2015 / 23:40)
В твоём случае (с Yii) нужно вынести бизнес логику в сервисный слой, что бы контроллеры получились максимально "тонкими".
Ну а потом просто плодить их под каждую задачу, т.е UserController - это "п
Бизнес логика в моделях. Ок...
https://github.com/yiisoft/yii ... ng.md
Вот что-то про форматирование ответа от контроллера, но я так понимаю это не совсем то, что нужно.
Т.е, как описывал reaper, что контроллер возвращает просто набор данных, а какой-то общий код, уже после форматирует это в зависимости от типа запроса - не получится.
# reaper (01.04.2015 / 23:43)
В случае с Yii, предполагаю, что тебе нужно запилить новые, специально для API.
Вот так я сразу и думал, но придется вести двойную
игру работу с моделями т.к. у них вся логика. Мне просто не нравится то, что придется два раза с базой работать