/** * Обработчик непойманых исключений * * @param object $exception - объект исключения */ public static function handleException($exception) { ob_end_clean_all(); $detals = array(); $detals['File'] = str_replace([ROOT_PATH, '\\'], ['', '/'], $exception->getFile()); $detals['Line'] = $exception->getLine(); $detals['Msg'] = $exception->getMessage(); Error::e503($detals); }
/** * Выброс ошибки 503 - Сервис недоступен * * @param string $detals - опциональное сообщенние */ public static function e503($detals = null) { Header::h503(); ob_end_clean_all(); if (!Request::is_ajax()) { echo View::make('error.e503')->with('detals', $detals)->compile(); } else { $outputData = array(); $outputData['status'] = '503 Service Unavailable'; if (!is_null($detals)) { $outputData['detals'] = $detals; } echo json_encode($outputData, JSON_UNESCAPED_SLASHES); } exit; }
/** * Рузультат работы * * Использует eval() т.к. так в PHP <=5.6 можно поймать Fatal Error * См. класс /knee/debug.php * * @return string */ public function result() { ob_start(); $__viewData = $this->data; extract($__viewData, EXTR_SKIP); $__eval = @eval('?>' . $this->template); if ($__eval === false and is_array(error_get_last())) { ob_end_clean_all(); \Knee\Error::e503(\Knee\Lang::get('system.view.error-compile') . '<br>View: ' . $this->path); } else { return trim(ob_get_clean()); } }