/** * Стартуем * @param $content * @return void */ public function run(&$content) { //Путь к файлу $__path = $this->file; //Счетчик времени $time = Boot::mktime(); //Оборачиваем все в функцию $view = function ($params, $content) use($__path) { //Извлекаем переменные if (!empty($params)) { extract((array) $params); } //Запускаем отладчик ob_start(); //Подключаем файл require $__path; //Выполняем сценарий $html = ob_get_contents(); ob_end_clean(); //Возвращаем данные return $html; }; //Выполняем функцию $html = $view((array) Boot_Controller::getInstance()->view, $content); //Debug Boot::getInstance()->debug(" Rendered " . str_replace(APPLICATION_PATH . "/", "", $__path) . " (" . Boot::check_time($time) . "ms)"); echo $html; }
/** * Инициализируем контроллер * @return void */ private function init_controller() { //Запускаем инстанс Boot_Controller::getInstance(); }
/** * Получить параметр запроса * @param $name * @return boolean */ public function hasParam($name) { return Boot_Controller::getInstance()->hasParam($name); }
/** * Получить параметр запроса * @param $name * @return boolean */ public function hasParam($name) { //Если есть в get запросе if (Boot_Controller::getInstance()->_request && array_key_exists($name, Boot_Controller::getInstance()->_request)) { return true; } //Если есть в post запросе if ($_POST && array_key_exists($name, $_POST)) { return true; } return false; }
public function __construct($message = null, $code = 500, $error_code = null, Exception $previous = null) { http_response_code($code); if (Boot_Controller::getInstance()->isAjax()) { //Обрабатываем библиотеки, в которых добавлена прослушка на ошибки Boot_Exception::sendLibraryException(new Exception($message, $code, $previous)); echo json_encode(array('error' => $code, 'error_code' => $error_code, 'message' => $message, 'trace' => APPLICATION_ENV == "production" ? "" : $this->getTraceAsString())); } else { throw new Boot_Exception($message, $code, $previous); } exit; }
/** * Рендерит шаблон, используя данные переданные из контроллера * @param string $name * @return string * @throws Exception */ public function render($name) { return $this->_render($name, (array) Boot_Controller::getInstance()->view); }
/** * Выполнить экшен * @param $action * @throws Exception * @return void */ public function _action($action) { Boot_Controller::getInstance()->_action($action, $this); }