Beispiel #1
0
 /**
  * Add an error; can also be called directly (with or without escaping)
  *
  * The following error types cannot be handled with a user defined function:
  * E_ERROR, E_PARSE, E_CORE_ERROR, E_CORE_WARNING, E_COMPILE_ERROR,
  * E_COMPILE_WARNING,
  * and most of E_STRICT raised in the file where set_error_handler() is called.
  *
  * Do not use the context parameter as we want to avoid storing the
  * complete $GLOBALS inside $_SESSION['errors']
  *
  * @param string  $errstr  error string
  * @param integer $errno   error number
  * @param string  $errfile error file
  * @param integer $errline error line
  * @param boolean $escape  whether to escape the error string
  *
  * @return void
  */
 public function addError($errstr, $errno, $errfile, $errline, $escape = true)
 {
     if ($escape) {
         $errstr = htmlspecialchars($errstr);
     }
     // create error object
     $error = new Error($errno, $errstr, $errfile, $errline);
     $error->setHideLocation($this->hide_location);
     // do not repeat errors
     $this->errors[$error->getHash()] = $error;
     switch ($error->getNumber()) {
         case E_STRICT:
         case E_DEPRECATED:
         case E_NOTICE:
         case E_WARNING:
         case E_CORE_WARNING:
         case E_COMPILE_WARNING:
         case E_RECOVERABLE_ERROR:
             /* Avoid rendering BB code in PHP errors */
             $error->setBBCode(false);
             break;
         case E_USER_NOTICE:
         case E_USER_WARNING:
         case E_USER_ERROR:
             // just collect the error
             // display is called from outside
             break;
         case E_ERROR:
         case E_PARSE:
         case E_CORE_ERROR:
         case E_COMPILE_ERROR:
         default:
             // FATAL error, display it and exit
             $this->dispFatalError($error);
             exit;
     }
 }