static function handle_error($errno, $errstr, $errfile, $errline)
{
if (!(error_reporting() & $errno)) {
// this error code is not included in error_reporting
return;
}
switch ($errno) {
case E_NOTICE:
case E_USER_NOTICE:
$ex = new PhpNotice($errstr, $errno, $errfile, $errline);
break;
case E_WARNING:
case E_USER_WARNING:
$ex = new PhpWarning($errstr, $errno, $errfile, $errline);
break;
case E_STRICT:
$ex = new PhpStrict($errstr, $errno, $errfile, $errline);
break;
case E_PARSE:
$ex = new PhpParse($errstr, $errno, $errfile, $errline);
break;
default:
$ex = new PhpError($errstr, $errno, $errfile, $errline);
}
self::handle_exception($ex, false);
if (self::$previous_error_handler) {
call_user_func(self::$previous_error_handler, $errno, $errstr, $errfile, $errline);
}
}