Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- /*
- * Роутинг для определения запрашиваемой страницы.
- * Вызывает необходимый контроллер и метод для обработки запроса.
- * Реализует паттерн синглтон.
- */
- namespace App\Core;
- class Route
- {
- public static function start()
- {
- $view = new View();
- $model = new Model();
- // Базовый контроллер
- $controllerName = 'Main';
- // Базовый метод
- $actionName = 'Index';
- // Получаем в переменную адрес, по которому пришёл пользователь
- $url = $_SERVER['REQUEST_URI'];
- // Разбираем URL и возвращаем его компоненты
- $parseUrl = parse_url($url);
- // Получаем в переменную $path элементы массива URL через разделитель
- $path = explode('/', $_SERVER['REQUEST_URI']);
- // Получаем контроллер по запросу
- if (!empty($path[1])) {
- $controllerName = $path[1];
- }
- // Получаем метод по запросу
- if (!empty($path[2])) {
- $actionName = $path[2];
- }
- // Приводим контроллеры и методы в необходимый вид
- $controllerName = ucfirst($controllerName).'Controller';
- $actionName = 'action'.ucfirst($actionName);
- // Подключаем контроллер
- $controllerFile = $controllerName.'.php';
- $controllerPath = 'app/controllers/'.$controllerFile;
- if (file_exists($controllerPath))
- {
- require_once 'app/controllers/'.$controllerFile;
- }
- else
- {
- echo 'Нет такой страницы.';
- }
- $controller = new $controllerName;
- $action = $actionName;
- if (method_exists($controller, $action))
- {
- $controller->$action();
- }
- else
- {
- echo 'Нет такой страницы.';
- }
- }
- public function errorPage()
- {
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement