Parametrat në Rrugët në MVC në PHP

Në mësimin e mëparshëm, rrugët tona kishin adresa fikse. Në realitet mekanizmi i rrugëzimit është më i ndërlikuar - mund të bëhet që një pjesë e URI-së së faqes të bjerë në parametra të emërtuar, të cilat më pas janë të disponueshme në kontrollues.

Le të themi, për shembull, që adresat tona të duken kështu: /test/param1/param2/, ku param1 dhe param2 janë stringje arbitrare. Në të njëjtën kohë, ne duam që adresa të këtij lloji të trajtohen nga një veprim i kontrolluesit. Për këtë, duhet të gjejmë një emër për parametrin dhe para tij të vendosim dy pika, si këtu:

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

Në rastin tonë, do të rezultojë që të gjitha kërkesat e formës /test/parametri1/parametri2/ do të përfundojnë në veprimin act. Në këtë rast, në parametrin e parë të këtij veprimi do të përfundojë një array asociativ me parametra: teksti që do të jetë në vend të parametrit të parë, përfundon në elementin e array-it me çelës 'var1', ndërsa teksti i parametrit të dytë - në 'var2'.

Le të themi, për shembull, që në shiritin e adresës është shtypur sa vijon: /test/eee/bbb/. Le të shohim se çfarë do të përmbajë parametri i parë i veprimit:

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

Krijoni një kontrollues NumController, dhe në të - veprimin sum. Le të themi se ky veprim trajton adresat e formës së mëposhtme: /nums/:n1/:n2/:n3/, ku parametrat do të jenë disa numra. Bëni që në ekran të printohet shuma e numrave të transmetuar.