Параметры в роутах в MVC в PHP

В предыдущем уроке наши роуты имели фиксированные адреса. На самом деле механизм роутинга более сложный - можно сделать так, чтобы часть URI страницы попадала в именованные параметры, доступные затем в контроллере.

Пусть, к примеру, наши адреса будут выглядеть вот так: /test/param1/param2/, где param1 и param2 - произвольные строки. При этом мы хотим, чтобы адреса такого вида обрабатывались одним действием контроллера. Для этого следует придумать имя параметра и перед ним поставить двоеточие, вот так:

/project/config/routes.php<?php
  use \Core\Route;
  
  return [
    new Route('/test/:var1/:var2/', 'page', 'act'),
  ];
?>

В нашем случае получится, что все запросы вида /test/параметр1/параметр2/ будут попадать на действие act. При этом в первый параметр этого действия будет попадать ассоциативный массив с параметрами: текст, который будет на месте первого параметра, попадает в элемент массива с ключом 'var1', а текст второго параметра - в 'var2'.

Пусть, к примеру, в адресной строке набрано следующее: /test/eee/bbb/. Давайте посмотрим, что будет содержать первый параметр действия:

project/controllers/PageController.php<?php
  namespace Project\Controllers;
  use Core\Controller;
  
  class PageController extends Controller
  {
    public function act($params)
    {
      var_dump($params); // ['var1' => 'eee', 'var2' => 'bbb']
    }
  }
?>
Задание 1

Сделайте контроллер NumController, а в нем - действие sum. Пусть это действие обрабатывает адреса следующего вида: /nums/:n1/:n2/:n3/, где параметрами будут некоторые числа. Сделайте так, чтобы на экран выводилась сумма переданных чисел.