Parametrit reiteissä MVC:ssä PHP:ssä

Edellisessä oppitunnissa reittimme olivat kiinteitä osoitteita. Todellisuudessa reititysmekanismi on monimutkaisempi - voit tehdä niin, että osa sivun URI:sta päätyy nimettyihin parametreihin, jotka ovat sitten saatavilla ohjaimessa.

Oletetaan esimerkiksi, että osoitteemme näyttävät tältä: /test/param1/param2/, missä param1 ja param2 ovat mielivaltaisia merkkijonoja. Samalla haluamme, että tällaiset osoitteet käsitellään yhdellä ohjaimen toiminnolla. Tätä varten tulee keksiä parametrin nimi ja laittaa kaksoispiste sen eteen, näin:

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

Meidän tapauksessamme käy niin, että kaikki muotoa /test/parametri1/parametri2/ olevat pyynnöt päätyvät toimintoon act. Samalla tämän toiminnon ensimmäiseen parametriin tulee assosiatiivinen taulukko parametreista: teksti, joka on ensimmäisen parametrin paikalla, päätyy taulukon elementtiin, jonka avain on 'var1', ja toisen parametrin teksti - avaimeen 'var2'.

Oletetaan esimerkiksi, että osoiteriville on kirjoitettu seuraava: /test/eee/bbb/. Katsotaan, mitä toiminnon ensimmäinen parametri sisältää:

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

Tee ohjain NumController, ja siihen - toiminto sum. Tee niin, että tämä toiminto käsittelee seuraavan muotoisia osoitteita: /nums/:n1/:n2/:n3/, missä parametrit ovat joitain numeroita. Tee niin, että ruudulle tulostetaan annettujen numeroiden summa.