lithium\core\ErrorHandler::run()
Register error and exception handlers.
This method (ErrorHandler::run()
) needs to be called as early as possible in the bootstrap
cycle; immediately after require
-ing bootstrap/libraries.php
is your best bet.
Parameters
-
array
$config
The configuration with which to start the error handler. Available options include:
'trapErrors'
boolean: Defaults tofalse
. If set totrue
, PHP errors will be caught byErrorHandler
and handled in-place. Execution will resume in the same context in which the error occurred.'convertErrors'
boolean: Defaults totrue
, and specifies that all PHP errors should be converted toErrorException
s and thrown from the point where the error occurred. The exception will be caught at the first point in the stack trace inside a matchingtry
/catch
block, or that has a matching error handler applied using theapply()
method.
Source
public static function run(array $config = []) {
$defaults = ['trapErrors' => false, 'convertErrors' => true];
if (static::$_isRunning) {
return;
}
static::$_isRunning = true;
static::$_runOptions = $config + $defaults;
$trap = function($code, $message, $file, $line = 0, $context = null) {
$trace = debug_backtrace();
$trace = array_slice($trace, 1, count($trace));
static::handle(compact('code', 'message', 'file', 'line', 'trace', 'context'));
};
$convert = function($code, $message, $file, $line = 0, $context = null) {
throw new ErrorException($message, 500, $code, $file, $line);
};
if (static::$_runOptions['trapErrors']) {
set_error_handler($trap);
} elseif (static::$_runOptions['convertErrors']) {
set_error_handler($convert);
}
set_exception_handler(static::$_exceptionHandler);
}