/** * Register a shutdown handler to log fatal errors * * @link http://www.php.net/manual/function.register-shutdown-function.php * @param Logger $logger * @return bool */ public static function registerFatalErrorShutdownFunction(Logger $logger) { // Only register once per instance if (static::$registeredFatalErrorShutdownFunction) { return false; } $errorPriorityMap = static::$errorPriorityMap; register_shutdown_function(function () use($logger, $errorPriorityMap) { $error = error_get_last(); if (null !== $error && $error['type'] === E_ERROR) { $logger->log($errorPriorityMap[E_ERROR], $error['message'], array('file' => $error['file'], 'line' => $error['line'])); } }); static::$registeredFatalErrorShutdownFunction = true; return true; }
/** * Register a shutdown handler to log fatal errors * * @link http://www.php.net/manual/function.register-shutdown-function.php * @param Logger $logger * @return bool */ public static function registerFatalErrorShutdownFunction(Logger $logger) { // Only register once per instance if (static::$registeredFatalErrorShutdownFunction) { return false; } $errorPriorityMap = static::$errorPriorityMap; register_shutdown_function(function () use($logger, $errorPriorityMap) { $error = error_get_last(); if (null === $error || !in_array($error['type'], [E_ERROR, E_PARSE, E_CORE_ERROR, E_CORE_WARNING, E_COMPILE_ERROR, E_COMPILE_WARNING], true)) { return; } $logger->log($errorPriorityMap[$error['type']], $error['message'], ['file' => $error['file'], 'line' => $error['line']]); }); static::$registeredFatalErrorShutdownFunction = true; return true; }