rawMessage = $message; if (!empty($filename) && preg_match('{Psy[/\\\\]ExecutionLoop}', $filename)) { $filename = ''; } switch ($severity) { case E_WARNING: case E_CORE_WARNING: case E_COMPILE_WARNING: case E_USER_WARNING: $type = 'warning'; break; case E_STRICT: $type = 'Strict error'; break; default: $type = 'error'; break; } $message = sprintf('PHP %s: %s%s on line %d', $type, $message, $filename ? ' in ' . $filename : '', $lineno); parent::__construct($message, $code, $severity, $filename, $lineno, $previous); } /** * Get the raw (unformatted) message for this error. * * @return string */ public function getRawMessage() { return $this->rawMessage; } /** * Helper for throwing an ErrorException. * * This allows us to: * * set_error_handler(array('Psy\Exception\ErrorException', 'throwException')); * * @throws ErrorException * * @param int $errno Error type * @param string $errstr Message * @param string $errfile Filename * @param int $errline Line number */ public static function throwException($errno, $errstr, $errfile, $errline) { throw new self($errstr, 0, $errno, $errfile, $errline); } /** * Create an ErrorException from an Error. * * @param \Error $e * * @return ErrorException */ public static function fromError(\Error $e) { return new self($e->getMessage(), $e->getCode(), 1, $e->getFile(), $e->getLine(), $e); } }