Denis, экземпляр эксепшна и будет твоим объектом результата. Именно в него нужно вложить всю необходимую информацию о произошедшей ошибке. Далее я вижу такие варианты:
1) Ты ловишь эксепшн примо в контроллере и тут же формируешь респонс. Способ пригоден для самых примитивных случаев.
2) Ты не ловишь эксепшн и таким образом пробрасываешь его дальше вплоть до глобального еррор-хендлера.
3) Комбинированный. Ты все-таки ловишь эксепшн бизнес-логики в контроллер, но заворачиваешь его в какой-нибудь NotFoundHttpException и пробрасываешь дальше вплоть до глобального еррор-хендлера.
На мой взгляд 3й вариант более концептуально более чистый, так как позволит управлять особенностями http протокола (статус-коды, заголовки) непосредственно в контроллере, ведь он именно для этого и предназначен.
Ну а в глобальном еррор-хендреле можно организовать какой-нибудь Command Bus, в котором заранее уже прописаны соответствия ErrorType => ErrorHandler. Ну а если все ошибки обрабатываются более-менее однообразно - можно и обычным сервисом рендеринга обойтись.
Никогда не слышал, чтобы symfony-разработчики юзали костыли типа OpenServer. Обычно им пользуются ламеры, клепающие говносайтики на CMSках. Поэтому если хотите переходить к серьезной разработке - советою отказаться от OpenServerа в принципе.
BoShurik, полезность FosRestBundle огромная, он покрывает огромный пласт работы с заголовким и форматами данных.
Но вот я хочу использовать аннотацию @View(statusCode=204), а он мне не дает этого сделать, потому что для работы с этой аннотацией ему нужен шаблонизатор и не важно, что я хотел просто http-код установить.
Потом вот такая бага еще есть https://github.com/FriendsOfSymfony/FOSRestBundle/...
Она, в принципе, легко купируется, но это решение еще поискать надо, а по умолчанию симфоня предлагает просто шаблонизатор добавить.
BoShurik, FosRestBundle и SensioFrameworkExtraBundle при более сложной настройке. Напрямую не требуют, но в один прекрасный момент могут упасть с ошибкой "не могу найти шаблонизатор".
Twitt, Твиг тебе в любом случае придется поставить, его 100500 различных компонентов будут требовать в зависимостях неявно. Это бесит, но это меньшее зло.
Illia Nezhyhai, это, конечно, замечательно, но вовсе не означает, что у других людей таких проблем так же не возникнет. Ну и понятие проблемы, конечно, у всех разное.
Illia Nezhyhai, позвольте полюбопытствовать, у вас был опыт проживания в одной комнате или квартире с представителями, скажем так, не очень интелектуальных профессий?
Illia Nezhyhai, люди из принципиально иных сфер (например, строительство) могут иметь сильно отличное от твоего мировозрение и ценности, можно легко нарваться на конфликт.
GavriKos, foreach не зависит от внутреннего указателя, он сделает копию массива, сбросить указатель копии и так же пройдется по всем элементам, а указатель изначального массива останется там же где и был. Дабы в этом убедиться, можешь выполнить следующий код:
1) Ты ловишь эксепшн примо в контроллере и тут же формируешь респонс. Способ пригоден для самых примитивных случаев.
2) Ты не ловишь эксепшн и таким образом пробрасываешь его дальше вплоть до глобального еррор-хендлера.
3) Комбинированный. Ты все-таки ловишь эксепшн бизнес-логики в контроллер, но заворачиваешь его в какой-нибудь NotFoundHttpException и пробрасываешь дальше вплоть до глобального еррор-хендлера.
На мой взгляд 3й вариант более концептуально более чистый, так как позволит управлять особенностями http протокола (статус-коды, заголовки) непосредственно в контроллере, ведь он именно для этого и предназначен.
Ну а в глобальном еррор-хендреле можно организовать какой-нибудь Command Bus, в котором заранее уже прописаны соответствия ErrorType => ErrorHandler. Ну а если все ошибки обрабатываются более-менее однообразно - можно и обычным сервисом рендеринга обойтись.