PHP:
скопировать код в буфер обмена
скопировать код в буфер обмена
- <?PHP
- /**
- * Класс Router
- * Компонент для работы с маршрутами
- */
- class Router
- {
- /**
- * Свойство для хранения массива роутов
- * @var array
- */
- private $routes;
- /**
- * Конструктор
- */
- public function __construct()
- {
- // Путь к файлу с роутами
- $routesPath = ROOT . '/config/routes.php';
- // Получаем роуты из файла
- $this->routes = include($routesPath);
- }
- /**
- * Возвращает строку запроса
- */
- private function getURI()
- {
- }
- }
- /**
- * Метод для обработки запроса
- */
- public function run()
- {
- // Получаем строку запроса
- $uri = $this->getURI();
- // Проверяем наличие такого запроса в массиве маршрутов (routes.php)
- foreach ($this->routes as $uriPattern => $path) {
- // Сравниваем $uriPattern и $uri
- // Получаем внутренний путь из внешнего согласно правилу.
- // Определить контроллер, action, параметры
- // Подключить файл класса-контроллера
- $controllerFile = ROOT . '/controllers/' .
- $controllerName . '.php';
- include_once($controllerFile);
- }
- // Создать объект, вызвать метод (т.е. action)
- $controllerObject = new $controllerName;
- /* Вызываем необходимый метод ($actionName) у определенного
- * класса ($controllerObject) с заданными ($parameters) параметрами
- */
- // Если метод контроллера успешно вызван, завершаем работу роутера
- if ($result != null) {
- break;
- }
- }
- }
- }
- }