getCode() ?: 500; #foreach ($e->getHeaders() as $key => $val) { # HTTP::setResponseHeader($key, $val); #} } else { $code = 500; } for ($html = ""; $e; $e = $e->getPrevious()) { $html .= static::htmlError(HTTP::getResponseStatusForCode($code), $e->getMessage(), $code, $e->getTraceAsString(), $title_tag, $message_tag, $trace_tag); } return $html; } /** * Format an error as HTML * @param string $title * @param string $message * @param int $code * @param string $trace * @param array $title_tag * @param array $message_tag * @param array $trace_tag * @return string */ public static function htmlError($title, $message, $code, $trace = null, array $title_tag = ["h1"], array $message_tag = ["p"], array $trace_tag = ["pre", "style='font-size:smaller;overflow-x:scroll'"]) { HTTP::setResponseCode($code); $html = sprintf("<%s>%s\n<%s>%s\n", implode(" ", $title_tag), $title, $title_tag[0], implode(" ", $message_tag), $message, $message_tag[0]); if ($trace_tag) { if (!isset($trace)) { ob_start(); debug_print_backtrace(); $trace = ob_get_clean(); } if (!empty($trace)) { $html .= sprintf("<%s>%s\n", implode(" ", $trace_tag), $trace, $trace_tag[0]); } } return $html; } }