Здравейте, разбрах че в php7 обработването на грешките е вече на по-високо ниво, и ще се работи изцяло с Exception-и. Ако може да помогнете да оправя системата. Целта е да прихващам не само Exception-ите, но и Warning и Notice и да ги записвам в log файлове.
Код:
//Start Errors functions
public function exceptionHandler(\Еxception $exception) {
$this->_exception = $this->_config->getConfigFile('exArr');
if ($this->_config && $this->_exception['exception'] == TRUE) {
echo '<pre>' . print_r($exception, TRUE) . '</pre>';
}
else {
$this->displayError($exception->getCode());
error_log($exception . PHP_EOL . PHP_EOL, 3, "../errors/FatalErrorLog.log");
}
}
public function displayError($error) {
try {
$this->_view->display('errors/' . $error);
}
catch (\Еxception $error) {
$headerStatus = $this->_common->headerStatus($error);
if ($headerStatus >= 400 && $headerStatus <= 499) {
$this->displayError(404);
exit;
}
if ($headerStatus >= 500) {
$this->displayError(500);
exit;
}
}
}
public function shutdownHandler() {
$error = error_get_last();
if ($error['type'] === E_ERROR || $error['type'] === E_USER_ERROR || $error['type'] === E_RECOVERABLE_ERROR || $error['type'] === E_PARSE || $error['type'] === E_CORE_ERROR || $error['type'] === E_CORE_WARNING || $error['type'] === E_COMPILE_ERROR || $error['type'] === E_COMPILE_WARNING) {
$this->displayError(500);
}
else {
$this->errorHandler($error['type'], $error['message'], $error['file'], $error['line']);
}
}
public function errorHandler($errno, $errstr, $errfile, $errline) {
switch ($errno) {
case E_WARNING:
case E_USER_WARNING:
$ErrorWarning = 'WARNING error ' . $errstr . ' at ' . $errfile . ':' . $errline;
error_log($ErrorWarning . PHP_EOL . PHP_EOL, 3, "../errors/WarningErrorLog.log");
continue;
case E_NOTICE:
case E_USER_NOTICE:
case E_DEPRECATED:
case E_USER_DEPRECATED:
case E_STRICT:
$ErrorStrict = 'STRICT error ' . $errstr . ' at ' . $errfile . ':' . $errline;
error_log($ErrorStrict . PHP_EOL . PHP_EOL, 3, "../errors/NoticeErrorLog.log");
break;
}
}