registry->set('log', new \Opencart\System\Library\Log($this->config->get('config_error_filename') ? $this->config->get('config_error_filename') : $this->config->get('error_filename'))); set_error_handler([$this, 'error']); set_exception_handler([$this, 'exception']); } /** * @param string $code * @param string $message * @param string $file * @param string $line * * @return bool */ public function error(string $code, string $message, string $file, string $line): bool { switch ($code) { case E_NOTICE: case E_USER_NOTICE: $error = 'Notice'; break; case E_WARNING: case E_USER_WARNING: $error = 'Warning'; break; case E_ERROR: case E_USER_ERROR: $error = 'Fatal Error'; break; default: $error = 'Unknown'; break; } if ($this->config->get('config_error_log')) { $sting = 'PHP ' . $error . ': ' . $message . "\n"; $sting .= 'File: ' . $file . "\n"; $sting .= 'Line: ' . $line . "\n"; $this->log->write($sting); } if ($this->config->get('config_error_display')) { echo '' . $error . ': ' . $message . ' in ' . $file . ' on line ' . $line . ''; } else { header('Location: ' . $this->config->get('error_page')); exit(); } return true; } /** * @param \Throwable $e * * @return void */ public function exception(\Throwable $e): void { if ($this->config->get('config_error_log')) { $sting = $e->getCode() . ': ' . $e->getMessage() . "\n"; $sting .= 'File: ' . $e->getFile() . "\n"; $sting .= 'Line: ' . $e->getLine() . "\n"; $this->log->write($sting); } if ($this->config->get('config_error_display')) { echo '' . $e->getMessage() . ': in ' . $e->getFile() . ' on line ' . $e->getLine() . ''; } else { header('Location: ' . $this->config->get('error_page')); exit(); } } }