public static function run(array $config = array())
{
$defaults = array('trapErrors' => false, 'convertErrors' => true);
if (static::$_isRunning) {
return;
}
static::$_isRunning = true;
static::$_runOptions = $config + $defaults;
$self = get_called_class();
$trap = function ($code, $message, $file, $line = 0, $context = null) use($self) {
$trace = debug_backtrace();
$trace = array_slice($trace, 1, count($trace));
$self::handle(compact('type', 'code', 'message', 'file', 'line', 'trace', 'context'));
};
$convert = function ($code, $message, $file, $line = 0, $context = null) use($self) {
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);
}