Параметри в маршрути в 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/, където параметрите са някакви числа. Направете така, че на екрана да се извежда сумата от подадените числа.