critical(FileLogger::MSG_FULL, [
'message' => $e->getMessage(),
'line' => $e->getLine(),
'file' => $e->getFile(),
]);
echo 'My Exception [' . $e->getCode() . '] ' . $e->getMessage() . '
'
. ' Exception on line ' . $e->getLine() . ' in file ' . $e->getFile()
. ', PHP ' . PHP_VERSION . ' (' . PHP_OS . ')
'
. 'aborting...
';
}
/**
* Error handler.
*
* @param int $errno Error number
* @param string $errstr Error message
* @param string $errfile Error file
* @param int $errline Error line
*
* @return bool
*
* @since 1.0.0
*/
public static function errorHandler(int $errno, string $errstr, string $errfile, int $errline) : bool
{
if (!(error_reporting() & $errno)) {
// This error code is not included in error_reporting
return false;
}
$logger = FileLogger::getInstance(__DIR__ . '/../Logs');
$logger->error(FileLogger::MSG_FULL, [
'message' => 'Unhandled error',
'line' => $errline,
'file' => $errfile,
]);
switch ($errno) {
case E_USER_ERROR:
echo 'My ERROR [' . $errno . '] ' . $errstr . '
';
break;
case E_USER_WARNING:
echo 'My WARNING [' . $errno . '] ' . $errstr . '
';
break;
case E_USER_NOTICE:
echo 'My NOTICE [' . $errno . '] ' . $errstr . '
';
break;
default:
echo 'Unknown error type: [' . $errno . '] ' . $errstr . '
';
break;
}
echo 'My Error Fatal error on line ' . $errline . ' in file ' . $errfile
. ', PHP ' . PHP_VERSION . ' (' . PHP_OS . '
'
. 'aborting...
';
error_clear_last();
return true;
}
/**
* Shutdown handler.
*
* @since 1.0.0
*/
public static function shutdownHandler() /* : void */
{
$e = error_get_last();
if (isset($e)) {
$logger = FileLogger::getInstance(__DIR__ . '/../Logs');
$logger->warning(FileLogger::MSG_FULL, [
'message' => $e['message'],
'line' => $e['line'],
'file' => $e['file'],
]);
echo 'My Error unhandled [' . $e['type'] . '] ' . $e['message'] . '
'
. ' Fatal error on line ' . $e['line'] . ' in file ' . $e['file']
. ', PHP ' . PHP_VERSION . ' (' . PHP_OS . ')
'
. 'aborting...
';
}
}
}