Я пытаюсь создать веб-службу REST, которая возвращает JSON для всех вызовов. Обычно это довольно просто, я просто делаю это:
return new Response(json_encode($return_object));
Мой вопрос: как я должен перехватывать исключения глобальным способом? Я хочу сделать это, потому что, если исключение происходит где-нибудь в моем приложении, я все равно хотел бы вернуть сообщение JSON клиенту, в котором говорится в основном "Yo dawg, я слышал, что вам нравятся исключения". Мое мышление заключается в том, что возвращение JSON как в случае успеха, так и в случае сбоев упростит работу, которую любой клиент должен выполнить для реализации моего API.
Пока, единственное, о чем я могу думать, - написать каждое действие контроллера следующим образом:
public function generateMemeAction($arg1, $arg2) {
$return_object = array();
try {
// stuff to generate meme here
$return_object['status'] = "GREAT SUCCESS!";
} catch (Exception $e) {
// epic fail
$return_object['status'] = "UnluckyBrianException";
}
return new Response(json_encode($return_object));
}
Это все замечательно и прекрасно, но этот блок try-catch будет одинаковым для каждого действия в моем приложении, и я буду чувствовать себя глупо каждый раз, когда мне приходится редактировать вокруг кучу макаронных изделий. Про советы?