Маршрутизация, имеет ли такой подход право быть? В попытках реализовать первый проект на 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
200 +1
0
Ответы
1

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

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

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

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

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

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

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

20 Апр в 13:07
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 548 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир