Задать вопрос

Как прокинуть Request URI в View?

Архитектура приложения следующая:

1. Front controller разбирает адрес запроса и выполняет роутинг - создаёт нужный контроллер и вызывает нужный метод с определёнными параметрами.
2. Контроллер подгружает данные из модели и помещает их в объект-контейнер Response, который затем передаётся нужному методу VIew.
3. View разбирает данные из Response, помещая их в нужные переменные подгружаемых впоследствии шаблонов. Кое-что также берётся из настроек текущего модуля, подгружаемых в конструкторе View.

Всё отлично работает, но есть один параметр, из-за которого у меня уже мозг кипит - это $_SERVER['REQUEST_URI'] - например, в зависимости от текущего URL должны затемняться кнопки меню (отрисовщик меню - отдельный объект). Массив $_SERVER хранится в реестре RequestRegistry. C запросом у меня работает только контроллер, потому обращаться к реестру-синглтону внутри View - нелогично. Помещать current_uri в Response в каждом методе контроллера тоже не лучшая идея - так как в Request только данные из Модели, т. е. из БД, да и это же копипаст (т. к. в каждом методе каждого контроллера будет). Записывать это значение в конструкторе контроллера - не комильфо, насколько я знаю.

Что же делать? Как View должен получать такие данные из запроса? Чтоб это было и аккуратно, и логично.

P. S. Та же проблема и с DOCUMENT_ROOT.
  • Вопрос задан
  • 141 просмотр
Подписаться 2 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
Writerim
@Writerim
Заполнить позже...
(отрисовщик меню - отдельный объект)

Так в нем нельзя что ли получить все глобальные переменные, которые нужны.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽