public function getDecodeJson($key, $default = null) { ErrorHandler::start(); $params = json_decode($this->getParam($key), $default); ErrorHandler::stop(); return (array) $params; }
/** * Retrieves singleton instance * * @return ErrorHandler */ public static function getInstance($andStart = false) { if (self::$instance == null) { self::$instance = new self(); if ($andStart) { self::$instance->start(); } } return self::$instance; }
/** * Use the glob function provided by the system. * * @param string $pattern * @param int $flags * @return array * @throws Exception\RuntimeException */ protected static function systemGlob($pattern, $flags) { if ($flags) { $flagMap = array(self::GLOB_MARK => GLOB_MARK, self::GLOB_NOSORT => GLOB_NOSORT, self::GLOB_NOCHECK => GLOB_NOCHECK, self::GLOB_NOESCAPE => GLOB_NOESCAPE, self::GLOB_BRACE => GLOB_BRACE, self::GLOB_ONLYDIR => GLOB_ONLYDIR, self::GLOB_ERR => GLOB_ERR); $globFlags = 0; foreach ($flagMap as $internalFlag => $globFlag) { if ($flags & $internalFlag) { $globFlags |= $globFlag; } } } else { $globFlags = 0; } ErrorHandler::start(); $res = glob($pattern, $globFlags); $err = ErrorHandler::stop(); if ($res === false) { throw new Exception\RuntimeException("glob('{$pattern}', {$globFlags}) failed", 0, $err); } return $res; }
ob_clean(); $errorCase = array(E_WARNING => "Warning!", E_ERROR => "Error!", E_USER_ERROR => "User Error", E_USER_WARNING => "User Warning", E_USER_NOTICE => "User Notice"); self::primitiveError(500, array_key_exists($errno, $errorCase) ? $errorCase[$errno] : "An unknown error occurred", $errstr . "<br/>Line " . $errline . " in " . $errfile); } public static function fatalHandler() { $error = error_get_last(); if (self::$Enabled && $error !== null) { $errorMsg = $error['message'] . ' on line ' . $error['line'] . "<br/>(" . $error['file'] . ")"; self::primitiveError(500, "Fatal error occurred", $errorMsg); } } private static $Enabled = false; public static function start() { error_reporting(0); self::$Enabled = true; set_error_handler(__CLASS__ . '::exceptionHandler', E_ALL); register_shutdown_function(__CLASS__ . '::fatalHandler'); } public static function stop() { self::$Enabled = false; error_reporting(E_ALL); restore_error_handler(); register_shutdown_function("exit"); } } ErrorHandler::start(); @(include_once "engine/Engine.php") or ErrorHandler::primitiveError(500, "Missing Engine class."); $engine = new Engine();
public static function splitMessage($message, &$headers, &$body, $EOL = Mime\Mime::LINEEND, $strict = false) { if ($message instanceof Headers) { $message = $message->toString(); } // check for valid header at first line $firstline = strtok($message, "\n"); if (!preg_match('%^[^\\s]+[^:]*:%', $firstline)) { $headers = array(); // TODO: we're ignoring \r for now - is this function fast enough and is it safe to assume noone needs \r? $body = str_replace(array("\r", "\n"), array('', $EOL), $message); return; } // see @ZF2-372, pops the first line off a message if it doesn't contain a header if (!$strict) { $parts = explode(':', $firstline, 2); if (count($parts) != 2) { $message = substr($message, strpos($message, $EOL) + 1); } } // find an empty line between headers and body // default is set new line if (strpos($message, $EOL . $EOL)) { list($headers, $body) = explode($EOL . $EOL, $message, 2); // next is the standard new line } elseif ($EOL != "\r\n" && strpos($message, "\r\n\r\n")) { list($headers, $body) = explode("\r\n\r\n", $message, 2); // next is the other "standard" new line } elseif ($EOL != "\n" && strpos($message, "\n\n")) { list($headers, $body) = explode("\n\n", $message, 2); // at last resort find anything that looks like a new line } else { ErrorHandler::start(E_NOTICE | E_WARNING); list($headers, $body) = preg_split("%([\r\n]+)\\1%U", $message, 2); ErrorHandler::stop(); } $headers = Headers::fromString($headers, $EOL); }