Parametry w trasach w MVC w PHP

W poprzedniej lekcji nasze trasy miały stałe adresy. W rzeczywistości mechanizm routingu jest bardziej złożony - można sprawić, że część URI strony trafiała do nazwanych parametrów, dostępnych następnie w kontrolerze.

Załóżmy, na przykład, że nasze adresy będą wyglądać tak: /test/param1/param2/, gdzie param1 i param2 to dowolne ciągi znaków. Chcemy przy tym, aby adresy tego typu były obsługiwane przez jedno działanie kontrolera. Aby to zrobić, należy wymyślić nazwę parametru i przed nią postawić dwukropek, tak:

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

W naszym przypadku okaże się, że wszystkie żądania typu /test/parametr1/parametr2/ będą trafiać do działania act. Przy czym do pierwszego parametru tej akcji będzie trafiać tablica asocjacyjna z parametrami: tekst, który będzie na miejscu pierwszego parametru, trafi do elementu tablicy z kluczem 'var1', a tekst drugiego parametru - do 'var2'.

Załóżmy, na przykład, że w pasku adresu wpisano następujące: /test/eee/bbb/. Spójrzmy, co będzie zawierał pierwszy parametr akcji:

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

Stwórz kontroler NumController, a w nim - działanie sum. Niech to działanie obsługuje adresy następującego typu: /nums/:n1/:n2/:n3/, gdzie parametrami będą jakieś liczby. Spraw, aby na ekranie wyświetlała się suma przekazanych liczb.