我正在为我的网站提供一个由PHP提供支持的公共API。然而,我真的在努力处理失败。由于其他人希望使用正确的JSON,因此发送原始PHP错误或现有JSON并将错误添加到最终将无效。
我的第一次尝试
//The absolute first thing: get a shutdown hook and force all errors to go through it
error_reporting(0);
register_shutdown_function('handleShutdown');
function handleShutdown() {
$error = error_get_last();
if($error !== NULL)
die(strip_tags(json_encode(array("phpError" => $error))));
}
现在您可以看到我正在使用关闭函数而不是set_error_handler
,因为某些失败不会被错误处理程序捕获。然而,随机错误(我没有一个确切的列表)仍然可以做到这一点,或者不被抓住或只是被添加到最后。
其他一个复杂问题是,我不能只打开输出缓冲并在错误上清除所有内容并只打印错误。这是因为某些方法会返回大量数据,并且使用输出缓冲会导致服务器出现任何负载。
还有什么我可以尝试将PHP错误包装在一个漂亮的JSON格式的字符串中吗?
答案 0 :(得分:2)
任何使用您的API 的人都应该关注随响应发送的HTTP状态代码。只要您正确报告HTTP状态代码,响应正文就是帮助消费者了解 出错的其他信息。