1

Тема: Откуда устанавливаются значения в свойство get класса RS\Http\Request?

В классе RS\Http\Request есть приватное свойство get, в котором хранится локальная копия суперглобального массива GET.
В массиве get есть значения с ключами 'controller' и 'Act'.
Подскажите, откуда устанавливаются эти значения? В классе есть функция set(), которая устанавливает значение по ключу, в том числе, в массив get. Но я не могу найти, откуда она вызывается.

Повысить оценку Понизить оценку

Re: Откуда устанавливаются значения в свойство get класса RS\Http\Request?

Наша система использует маршутизацию по маске. Это значит, что когда вы передаёте системе какой либо адрес, она начинает по маске регулярного выражения искать соответствие переданного адреса за это отвечает \RS\Router\Manager. Именно он стартует первым когда приходит запрос. Подробнее об этом можно почитать здесь.
Исходя из полученного адреса и маски регулярно выражения, мы дописывает и Act и controller в суперглобальный массив
Мы в своих модулях как раз и пишем по какой маске будет отрабатывать контроллер. В публичной части это выглядит так:

$routes[] = new \RS\Router\Route('feedback-front-form', array(
            '/feedback-{form_id:[\d]+}/'
        ), null, t('Форма связи'));

Т.е. будет controller = feedback-front-form, Act = index (т.к. по умолчанию это index), а в form_id = идентификатор переданной формы, и ещё это будет добавлено в $_GET. Далее уже отрабатывает \RS\Http\Request с методом set. Естественно, что Вы можете передать Act дополнительно отдельным параметром и направить на другой метод.