我正在尝试在PHP中创建一个通用类,该类将提供一种调用Web服务,解析返回的XML并返回JSON对象的方法。
我在不支持CURL和/或JSON的服务器上遇到致命错误,并寻找一种方法来正常地将JSON对象中的错误返回给客户端,而不是崩溃。
经过一番搜索,我发现了一篇文章,建议我可以调用ob_start("fatal_error_handler")并提供处理程序函数:
function fatal_error_handler($buffer) {
if (ereg("(error</b>:)(.+)(<br)", $buffer, $regs) ) {
$err = preg_replace("/<.*?>/","",$regs[2]);
$buffer = json_encode(array("errorMessage" => "Fatal error occurred", "exceptionMessage" => $err));
}
return $buffer;
}
Run Code Online (Sandbox Code Playgroud)
并ob_end_flush在脚本末尾调用。
这种运作良好,但我现在想的是功能添加到我的课。我尝试并成功添加了以下构造函数和析构函数:
function __construct() {
ob_start("fatal_error_handler");
}
function __destruct() {
ob_end_flush();
}
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试将处理程序函数移入类时,无法将其添加到ob_start()调用中。我尝试了ob_start("$this->fatal_error_handler")和ob_start("WebService::fatal_error_handler")(WebService是我的班级名称)-无济于事。
我的问题是,如何将类函数的名称传递到ob_start构造函数中?
一个额外的问题:我是在正确地做这件事,还是有一种更好的方法来处理客户可以处理的致命错误?
| 归档时间: |
|
| 查看次数: |
2993 次 |
| 最近记录: |