Parameetrid MVC ruutides PHP-s

Eelmises õppetükis olid meie ruutidel fikseeritud aadressid. Tegelikult on marsruutimise mehhanism keerulisem - võib teha nii, et osa URI lehest satub nimetatud parameetritesse, millele on siis juurdepääs kontrolleris.

Oletame, et meie aadressid näevad välja sellised: /test/param1/param2/, kus param1 ja param2 on suvalised stringid. Samas me soovime, et sellist tüüpi aadresse töötleks üks kontrolleri tegevus. Selleks tuleb välja mõelda parameetri nimi ja selle ette panna koolon, nii:

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

Meie puhul saab nii, et kõik päringud tüübiga /test/parameeter1/parameeter2/ suunatakse tegevusele act. Samal ajal selle tegevuse esimesse parameetri satub assotsiatiivne massiiv parameetritega: tekst, mis on esimese parameetri kohal, satub massiivi elemendile võtmega 'var1', ja teise parameetri tekst - 'var2'.

Oletame, et aadressiribale on sisestatud järgmine: /test/eee/bbb/. Vaatame, mida sisaldab tegevuse esimene parameeter:

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

Tehke kontroller NumController, ja selles - tegevus sum. Las see tegevus töötleb järgmise välimusega aadresse: /nums/:n1/:n2/:n3/, kus parameetriteks on mingid numbrid. Tehke nii, et ekraanile prinditakse edastatud arvude summa.