Utilizarea parametrilor în rute în MVC în PHP

Să analizăm aplicarea celor descrise pe un exemplu mai apropiat de realitate. Să presupunem că controlerul nostru PageController conține un array de pagini (aceste date ar trebui să fie returnate de model, dar cu modelele încă nu ne-am ocupat, așa că să presupunem că datele sunt stocate temporar în controler):

project/controllers/PageController.php<?php
  namespace Project\Controllers;
  use Core\Controller;
  
  class PageController extends Controller
  {
    private $pages;
    
    public function __construct()
    {
      $this->pages = [
        1 => 'page 1',
        2 => 'page 2',
        3 => 'page 3',
      ];
    }
  }
?>

Să creăm acțiunea show, care va afișa pe ecran pagina cu un anumit număr (id):

project/controllers/PageController.php<?php
  namespace Project\Controllers;
  use Core\Controller;
  
  class PageController extends Controller
  {
    private $pages;
    
    public function __construct()
    {
      $this->pages = [
        1 => 'page 1',
        2 => 'page 2',
        3 => 'page 3',
      ];
    }
    
    public function show()
    {
      // aici vom afișa pagina cu un anumit număr
    }
  }
?>

Să presupunem că la accesarea adresei /page/1/ va fi afișat textul primei pagini, la accesarea adresei /page/2/ - textul celei de-a doua pagini și așa mai departe. Să creăm ruta corespunzătoare:

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

Să implementăm metoda descrisă show:

project/controllers/PageController.php<?php
  namespace Project\Controllers;
  use Core\Controller;
  
  class PageController extends Controller
  {
    private $pages;
    
    public function __construct()
    {
      $this->pages = [
        1 => 'page 1',
        2 => 'page 2',
        3 => 'page 3',
      ];
    }
    
    public function show($params)
    {
      echo $this->pages[ $params['id'] ]; // afișăm pagina după număr
    }
  }
?>
Задание 1

Implementați controlerul UserController, conținând următorul array:

php<?php
  $this->users = [
    1 => ['name'=>'user1', 'age'=>'23', 'salary' => 1000],
    2 => ['name'=>'user2', 'age'=>'24', 'salary' => 2000],
    3 => ['name'=>'user3', 'age'=>'25', 'salary' => 3000],
    4 => ['name'=>'user4', 'age'=>'26', 'salary' => 4000],
    5 => ['name'=>'user5', 'age'=>'27', 'salary' => 5000],
  ];
?>
Задание 2

În controlerul UserController, creați acțiunea show, care va afișa utilizatorul după un anumit id. Să presupunem că ea va fi accesibilă la adresa de tipul: /user/:id/.

Задание 3

În controlerul UserController, creați acțiunea info, care va afișa numele sau vârsta utilizatorului specificat. Să presupunem că această acțiune va fi accesibilă la adresa de tipul: /user/:id/:key/, unde key va avea valoarea 'name', 'age' sau 'salary'.

Задание 4

În controlerul UserController, creați acțiunea all, care va afișa lista tuturor utilizatorilor pe ecran. Să presupunem că această acțiune va fi accesibilă la adresa de tipul: /user/all/ (aici nu vor fi parametri).

Задание 5

În controlerul UserController, creați acțiunea first, care va afișa lista primilor N utilizatori pe ecran. Să presupunem că această acțiune va fi accesibilă la adresa de tipul: /user/first/:n/, unde în parametru va fi numărul de utilizatori care trebuie afișați pe ecran.