Параметрҳо дар роутҳои MVC дар PHP

Биёед истифодаи он чи ки шарҳ дода шуд, дар мисоли амлӣ таҳқиқ кунем. Фарз мекунем, ки контроллери PageController массиви саҳифаҳоро дар бар мегирад (ин додаҳоро бояд модель дода бошад, аммо мо бо модельҳо ҳанӯз шинос нестем, аз ин рӯ бигзор ин додаҳо ҳоло танҳо дар контроллер нигоҳ дошта шаванд):

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',
      ];
    }
  }
?>

Биёед амалиёти show-ро созем, ки саҳифаро бо рақами муайян (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()
    {
      // дар ин ҷо саҳифаро бо рақами муайян чоп мекунем
    }
  }
?>

Бигзор дар муроҷиат ба нишонии /page/1/ матни саҳифаи аввал чоп шавад, дар муроҷиат ба нишонии /page/2/ - матни саҳифаи дуюм ва ғайра чоп шавад. Роути мувофиқро месозем:

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

Методи тавсифшудаи 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'] ]; // саҳифаро бо рақам чоп мекунем
    }
  }
?>
Задание 1

Контроллери UserController-ро амалӣ кунед, ки массиви зеринро дар бар мегирад:

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

Дар контроллери UserController, амалиёти show-ро созед, ки корбарро (user)-ро барои id-и муайян чоп кунад. Бигзор он дастрас бошад ба нишони зерин: /user/:id/.

Задание 3

Дар контроллери UserController, амалиёти info-ро созед, ки ном ё синни корбари (user)-и додашударо чоп кунад. Бигзор ин амалиёт дастрас бошад ба нишони зерин: /user/:id/:key/, ки дар он key қимати 'name', 'age' ё 'salary' дошта бошад.

Задание 4

Дар контроллери UserController, амалиёти all-ро созед, ки рӯйхати ҳамаи корбарон (users)-ро ба экран чоп кунад. Бигзор ин амалиёт дастрас бошад ба нишони зерин: /user/all/ (дар ин ҷо параметрҳое вуҷуд надоранд).

Задание 5

Дар контроллери UserController, амалиёти first-ро созед, ки рӯйхати N корбарони (users)-и аввалро ба экран чоп кунад. Бигзор ин амалиёт дастрас бошад ба нишони зерин: /user/first/:n/, ки дар он параметр шумораи корбароне (users)-ро дорад, ки бояд ба экран чоп шаванд.