Parametre i ruter i MVC i PHP

I den forrige lektion havde vores ruter faste adresser. Faktisk er routing-mekanismen mere avanceret - det er muligt at gøre så en del af URI'en ender i navngivne parametre, der derefter er tilgængelige i controlleren.

Lad os for eksempel sige, at vores adresser skal se ud sådan her: /test/param1/param2/, hvor param1 og param2 er vilkårlige strenge. Samtidig ønsker vi, at adresser af denne type håndteres af en enkelt controller-handling. For at gøre dette skal du finde på et parameternavn og sætte et kolon foran det, sådan her:

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

I vores tilfælde vil det betyde, at alle anmodninger af typen /test/parameter1/parameter2/ vil blive sendt til handlingen act. Mens den første parameter til denne handling vil indeholde et associativt array med parametre: teksten, der står på den første parameters plads, ender i array-elementet med nøglen 'var1', og teksten fra den anden parameter - i 'var2'.

Lad os for eksempel sige, at følgende er indtastet i adresselinjen: /test/eee/bbb/. Lad os se, hvad den første parameter til handlingen vil indeholde:

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

Opret controlleren NumController, og i den - handlingen sum. Lad denne handling håndtere adresser af følgende type: /nums/:n1/:n2/:n3/, hvor parametrene er nogle tal. Gør så summen af de overførte tal bliver vist på skærmen.