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