/** * Контроллер или роут не найден, нужно ответить юзеру страницей 404. * * В конфиге должен быть прописан контроллер, который будет обрабатывать 404 ошибку. Если он не задан (пустая * строка), возвращаем 404-й заголовок и простой текст. * * Предохранитель для кодера: допустим, веб-сервер Apache и задан ErrorDocument. Но указанный адрес роутеру * неизвестен. Тогда роутер попытается ответить 404 (т.е. сюда попадет). А мы при этом реальный ответ веб-сервера * не подменяем и возвращаем текст по его коду. * * @throws ConfigException из parseHandler() */ private function notFound() { // Предохранитель $code = http_response_code(); if ($code > 400) { $msg = $code . ': ' . Response::textOf($code); if (isset($_SERVER['REDIRECT_URL'])) { $msg .= '<br>URL: ' . $_SERVER['REDIRECT_URL']; } Response::send($msg); App::end(); } http_response_code(404); if ($handler = App::conf('router.404_handler', false)) { list($controller, $action) = $this->parseHandler($handler); $controller->{$action}(); } else { Response::send('Неизвестный URL'); App::end(); } }