I'm trying to create a generic class in PHP that will provide a way to call a web service, parse the returning XML and return a JSON object.
I ran into fatal errors on servers that do not support CURL and/or JSON and looked for a way to gracefully returning the error in a JSON object back to the client, rather than crashing.
After some searching,I found an article that suggested I could call ob_start("fatal_error_handler") and provide a handler function:
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;
}
ve ob_end_flush yazısının sonunda çağırıyor.
This worked well, ama şimdi benim sınıf bu işlevselliği eklemek istedim. Ben denedim, ve aşağıdaki yapıcı ve yıkıcı ekleyerek, başarılı:
function __construct() {
ob_start("fatal_error_handler");
}
function __destruct() {
ob_end_flush();
}
Ben sınıfa işleyici işlevini hareket çalıştım ama, ben ob_start() görüşmesine ekleyin hiçbir yolu yoktu. .? Ben ob_start("$this->fatal_error_handler") denedim, ve ob_start("WebService::fatal_error_handler") (WebService benim sınıf adı olan) - boşuna
My question is, how do I pass a name of a class function to ob_start Benim kurucusuna dahil bonus soru
: duyuyorum Ben bu hakkı yapıyor, ya da müşteri işleyebilir bir şekilde ölümcül hataları işlemek için aa daha iyi bir yolu var mı?