Parametry v routách v MVC v PHP

V předchozí lekci měly naše routy pevné adresy. Ve skutečnosti je mechanismus routování složitější - lze zařídit, aby část URI stránky přecházela do pojmenovaných parametrů, dostupných poté v kontroleru.

Předpokládejme, že naše adresy budou vypadat takto: /test/param1/param2/, kde param1 a param2 jsou libovolné řetězce. Přitom chceme, aby adresy tohoto druhu byly zpracovávány jednou akcí kontroleru. K tomu je třeba vymyslet název parametru a před něj umístit dvojtečku, takto:

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

V našem případě to bude znamenat, že všechny požadavky druhu /test/parametr1/parametr2/ budou směřovat na akci act. Přitom do prvního parametru této akce bude přicházet asociativní pole s parametry: text, který bude na místě prvního parametru, přejde do prvku pole s klíčem 'var1', a text druhého parametru - do 'var2'.

Předpokládejme, že v adresním řádku je zadáno následující: /test/eee/bbb/. Podívejme se, co bude obsahovat první parametr akce:

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

Vytvořte kontroler NumController, a v něm - akci sum. Nechť tato akce zpracovává adresy následujícího druhu: /nums/:n1/:n2/:n3/, kde parametry budou určitá čísla. Zařiďte, aby na obrazovku byla vypsána suma předaných čísel.