data = $data; } static function addWarning ($domain, $code, $message) { if (!isset (self::$reply->warnings)) self::$reply->warnings = []; self::$reply->warnings[] = new Message ($domain, $code, $message); } static function setError ($domain, $code, $message) { self::$reply->data = NULL; self::$reply->error = new Message ($domain, $code, $message); } static function exceptionHandler ($e) { // XXX: Exception trace //$trace = array_pop (debug_backtrace (DEBUG_BACKTRACE_IGNORE_ARGS, 2)); self::setError ('PHP', 'exception', $e->getMessage ()); self::sendReply (); } static function errorHandler ($code, $message, $file, $line, $context) { self::setError ('PHP', 'error', "$file:$line:$message"); self::sendReply (); return TRUE; } static function sendReply () { header ('Content-Type: application/json; charset=UTF-8'); echo json_encode (self::$reply); } } ?>