Parametri în rute în MVC în PHP

În lecția precedentă, rutele noastre aveau adrese fixe. De fapt, mecanismul de rutare este mai complex - se poate face ca o parte a URI-ului paginii să ajungă în parametri numiți, accesibili apoi în controller.

Să presupunem, de exemplu, că adresele noastre vor arăta așa: /test/param1/param2/, unde param1 și param2 sunt șiruri arbitrare. În același timp, dorim ca adresele de acest tip să fie procesate de o acțiune a controller-ului. Pentru aceasta, trebuie să inventăm un nume pentru parametru și să punem un două puncte înaintea lui, astfel:

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

În cazul nostru, se va întâmpla ca toate cererile de tipul /test/parametru1/parametru2/ să ajungă la acțiunea act. În același timp, în primul parametru al acestei acțiuni va ajunge un array asociativ cu parametrii: textul care va fi în locul primului parametru, va ajunge în elementul array-ului cu cheia 'var1', iar textul celui de-al doilea parametru - în 'var2'.

Să presupunem, de exemplu, că în bara de adrese este introdus următorul lucru: /test/eee/bbb/. Să vedem ce va conține primul parametru al acțiunii:

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

Creați un controller NumController, și în el - acțiunea sum. Fie ca această acțiune să proceseze adrese de următoarea formă: /nums/:n1/:n2/:n3/, unde parametrii vor fi niște numere. Faceți ca pe ecran să fie afișată suma numerilor transmise.