7.4.4 Получение аргументов контроллера
На этом шаге уже точно определен контроллер, который будет вызван. Далее необходимо получить все аргументы, которые будут использованы:
// private function handleRaw
...
$arguments = $this->resolver->getArguments($request, $controller);
…
Controller Resolver определяет какие аргументы ему передавать, используя реверс-инжиниринг PHP (Reflection). Затем он проходит в цикле все атрибуты контроллера и использует следующие правила, чтобы понять какие значения должны быть отправлены для каждого аргумента:
- Если существует параметр запроса Request, совпадающий по названию с аргументом контроллера, тогда используется его значение. Например, если первый аргумент в контроллере $year и имеется параметр запроса - year.public
function indexAction($year,$month,$day) { ... }
- Если у аргумента в контроллере указан класс Request, тогда в качестве значения передаётся объект Request.public
function indexAction(Request $request) { ... }
Также можно совмещать оба варианта в одном контроллере:
public function indexAction(Request $request, $year) { ... }