Parametrų panaudojimas MVC maršrutuose PHP

Pažiūrėkime aprašyto panaudojimą realistesniame pavyzdyje. Tarkime, mūsų kontroleris PageController turi puslapių masyvą (šiuos duomenis turėtų grąžinti modelis, tačiau su modeliais dar nesiginčijome, todėl kol kas tegul duomenys tiesiog laikomi kontroleryje):

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

Sukurkime veiksmą show, kuris atvaizduos ekrane puslapį su tam tikru numeriu (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()
    {
      // čia atvaizduosime puslapį su tam tikru numeriu
    }
  }
?>

Tegul kreipiantis į adresą /page/1/ bus atvaizduojamas pirmojo puslapio tekstas, kreipiantis į adresą /page/2/ - antrojo puslapio tekstas ir taip toliau. Sukurkime atitinkamą maršrutą:

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

Įgyvendinkime aprašytą metodą 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'] ]; // atvaizduojame puslapį pagal numerį
    }
  }
?>
Задание 1

Įgyvendinkite kontrolerį UserController, kuriame yra toks masyvas:

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

Kontroleryje UserController, sukurkite veiksmą show, kuris atvaizduos vartotoją pagal nurodytą id. Tegul jis būna prieinamas adresu, kurio formatas: /user/:id/.

Задание 3

Kontroleryje UserController, sukurkite veiksmą info, kuris atvaizduos nurodyto vartotojo vardą arba amžių. Tegul šis veiksmas būna prieinamas adresu, kurio formatas: /user/:id/:key/, kur key gali turėti reikšmę 'name', 'age' arba 'salary'.

Задание 4

Kontroleryje UserController, sukurkite veiksmą all, kuris atvaizduos visų vartotojų sąrašą ekrane. Tegul šis veiksmas būna prieinamas adresu, kurio formatas: /user/all/ (čia jokių parametrų nebus).

Задание 5

Kontroleryje UserController, sukurkite veiksmą first, kuris atvaizduos N pirmųjų vartotojų sąrašą ekrane. Tegul šis veiksmas būna prieinamas adresu, kurio formatas: /user/first/:n/, kur parametre bus nurodytas vartotojų skaičius, kurį reikia atvaizduoti ekrane.