Маршрутизация, имеет ли такой подход право быть? В попытках реализовать первый проект на mvc паттерне столкнулся с проблемой роутинга. В итоге проблему нужно было решать, немного погуглив, поспрашивав там и тут, додумал такое вот решение:setUri();
$this->setController();
$this->setParams();
$this->setRulls();
}
private function setURI(){
if($_SERVER['REQUEST_URI'] != '/'):
$this->uri = explode('/',trim(parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH), '/'));
endif;
}

private function setController(){
$this->controller = array_shift($this->uri);
}

private function setParams(){
foreach ($this->uri as $value):
$this->params[] = $value;
endforeach;
}

private function setRulls(){
file_exists(SITE_ROOT.DS.'routing'.DS.'rulls.php') ? $this->rulls = include(SITE_ROOT.DS.'routing'.DS.'rulls.php') : die('Файл с конфигурацией роутинга где-то затерялся, извини.');
}

public function run(){
$_REQUEST = array_merge($_REQUEST, $this->params);
$controller = '\\controllers\\'.$this->rulls[$this->controller]['controller'];
$action = $this->rulls[$this->controller]['action'];
$controller = new $controller;
$controller->$action();
}
}
?>
Все вроде как работает, но мб есть более очевидное решение или это не соответствует сегодняшним реалиям в данном вопросе. Хотелось бы услышать объективную критику, и если есть куда копать(а я просто убежден в том, что есть), мб подскажите?

21 Авг 2019 в 07:06
224 +1
0
Ответы
1

Конечно, могу поделиться своим мнением о вашем подходе к роутингу.

В целом, ваш класс Router выполнен в рамках принципов MVC и понятен в использовании. Однако, есть несколько моментов, на которые стоит обратить внимание:

Использование глобальной переменной $_REQUEST для передачи параметров не является лучшей практикой. Рекомендуется использовать более явные методы передачи параметров, например, через методы контроллера или через URI.

Хранение правил маршрутизации в отдельном файле конфигурации - хорошая практика. Однако, возможно стоит добавить проверку на существование нужных параметров в массиве $rulls.

Может быть стоит добавить обработку случая, когда запрашиваемый контроллер или действие не найдены в конфигурации, чтобы предотвратить появление ошибок.

Рекомендуется добавить более подробные комментарии к методам класса, чтобы было проще понять их назначение.

В целом, ваш подход к роутингу вполне рабочий и соответствует принципам MVC. Однако, улучшения можно внести для повышения читаемости и надежности кода. Будет полезно изучить более продвинутые решения и фреймворки для маршрутизации, чтобы получить дополнительные идеи и улучшить свой код. Надеюсь, мои комментарии были полезными для вас.

20 Апр 2024 в 13:07
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир