Exemplo n.º 1
0
 /**
  * Execute sql query.
  *
  * @param  string $sql
  * @return \mysqli_result
  */
 public function query($sql)
 {
     $mysqliResult = mysqli_query($this->conn, $this->getSqlWithPrefix($sql));
     if (!$mysqliResult) {
         echo '<pre><h4 class="text-danger">MySQL Error:</h4>' . $this->conn->errno . ': ' . $this->conn->error . '<h5>Query</h5>' . $this->getSqlWithPrefix($sql) . '<h5>Debug backtrace</h5>' . debug_backtrace_html() . '</pre>';
     }
     return $mysqliResult;
 }
Exemplo n.º 2
0
 /**
  * Обработчик ошибок PHP
  * Сигнатура метода совпадает с требованиями PHP
  *
  * @param integer $errno      Код ошибки
  * @param string  $errfile    Файл в котором происходит ошибка
  * @param string  $errline    Строка в которой была ошибка
  * @param string  $errcontext Контекст в котором произошла ошибка
  */
 public function handler($errno, $error_msg, $errfile = NULL, $errline = NULL, $errcontext = NULL, $backtrace = NULL)
 {
     // Если вывод ошибок включен
     if (!self::$OUTPUT) {
         return NULL;
     }
     // Если не передан стек вызовов получим текущий
     if (!isset($backtrace)) {
         $backtrace = debug_backtrace(FALSE);
     }
     // Если сообщение установлено
     if (!isset($error_msg) || $error_msg == 'Undefined' || !isset($error_msg[0])) {
         return FALSE;
     }
     // Указатель на "правильный" уровень стека вызовов
     if (isset($backtrace[1])) {
         $callee =& $backtrace[1];
     }
     // Если ошибка вызывается из функции то укажем ее
     if (isset($callee['function'])) {
         $error_msg = '<u>' . $callee['function'] . '()</u>&nbsp;' . $error_msg;
     }
     // Если ошибка вызывается из класса то укажем его
     if (isset($callee['class'])) {
         $error_msg = '<u>' . $callee['class'] . '</u>::' . $error_msg;
     }
     // Если не передан файл где была ошибка
     if (!isset($errfile)) {
         $errfile = isset($callee['file']) ? $callee['file'] : '';
     }
     // Если не передана линия где была ошибка
     if (!isset($errline)) {
         $errline = isset($callee['line']) ? $callee['line'] : '';
     }
     // Сформируем стек вызовов для разбора ошибки
     $error_msg = debug_backtrace_html($error_msg, $backtrace);
     // Описание типа
     $error_type = '';
     // CSS класс ошибки
     $error_css = '';
     // Определим описание типа ошибки
     switch ($errno) {
         case E_ERROR:
             $error_type = 'Фатальная ошибка';
             $error_css = '_core_fatal_error';
             break;
         case E_CORE_ERROR:
             $error_type = 'Ошибка ядра PHP';
             $error_css = '_core_fatal_error';
             break;
         case E_SAMSON_FATAL_ERROR:
             $error_type = 'Фатальная ошибка SamsonPHP';
             $error_css = '_core_fatal_error';
             break;
         case E_SAMSON_SNAPSHOT_ERROR:
             $error_type = 'Ошибка создания отпечатка SamsonPHP';
             break;
         case E_SAMSON_RENDER_ERROR:
             $error_type = 'SamsonPHP rendering error';
             break;
         case E_PARSE:
             $error_type = 'Ошибка парсинга';
             $error_css = '_core_fatal_error';
             break;
         case E_COMPILE_ERROR:
             $error_type = 'Ошибка компиляции';
             $error_css = '_core_fatal_error';
             break;
         case E_USER_ERROR:
             $error_type = 'Пользовательская ошибка';
             break;
         case E_WARNING:
             $error_type = 'Предупреждение';
             break;
         case E_CORE_WARNING:
             $error_type = 'Предупреждение ядра PHP';
             break;
         case E_COMPILE_WARNING:
             $error_type = 'Предупреждение компиляции';
             break;
         case E_USER_WARNING:
             $error_type = 'Пользовательское предупреждение';
             break;
         case E_NOTICE:
             $error_type = 'Замечание';
             break;
         case E_USER_NOTICE:
             $error_type = 'Пользовательское замечание';
             break;
         case E_STRICT:
             $error_type = 'Строгая ошибка';
             break;
         case E_RECOVERABLE_ERROR:
             $error_type = 'Востанавливаемая ошибка';
             break;
         case E_DEPRECATED:
             $error_type = 'Использование устаревших данных';
             break;
         case E_USER_DEPRECATED:
             $error_type = 'Старая функция';
             break;
         case E_SAMSON_CORE_ERROR:
             $error_type = 'Ошибка SamsonPHP';
             break;
         case E_SAMSON_ACTIVERECORD_ERROR:
             $error_type = 'Ошибка ActiveRecord';
             break;
         case E_SAMSON_CMS_ERROR:
             $error_type = 'Ошибка SamsonCMS';
             break;
         case D_SAMSON_DEBUG:
             $error_type = 'Отладка SamsonPHP';
             $error_css = '_core_debug';
             break;
         case D_SAMSON_CMS_DEBUG:
             $error_type = 'Отладка SamsonCMS';
             $error_css = '_core_debug';
             break;
         case D_SAMSON_ACTIVERECORD_DEBUG:
             $error_type = 'Отладка ActiveRecord';
             $error_css = '_core_debug';
             break;
         default:
             $error_type = 'Неизвестная ошибка';
     }
     // Сформируем ошибку в виде массива
     $this->errors[] = $this->toError($errno, $error_type . ':', $error_msg, $errfile, $errline, $error_css);
     // Если это фатальная ошибка - остановим выполнение скрипта
     if ($errno == E_SAMSON_FATAL_ERROR) {
         die;
     }
 }