Anvendelse af parametre i ruter i MVC i PHP

Lad os se anvendelsen af det beskrevne på et mere livagtigt eksempel. Lad vores controller PageController indeholde en matrix af sider (disse data bør leveres af modellen, men med modeller har vi endnu ikke dykket ned i, så lad dataene foreløbig blot opbevares i controlleren):

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

Lad os lave en handling show, som vil vise en side med et bestemt nummer (id) på skærmen:

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()
    {
      // her vil vi vise siden med et bestemt nummer
    }
  }
?>

Lad ved henvendelse til adressen /page/1/ teksten fra den første side blive vist, ved henvendelse til adressen /page/2/ - teksten fra den anden side og så videre. Lad os lave en tilsvarende rute:

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

Lad os implementere den beskrevne metode 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'] ]; // viser siden efter nummer
    }
  }
?>
Задание 1

Implementer controlleren UserController, som indeholder følgende matrix:

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

I controlleren UserController, lav handlingen show, som vil vise brugeren med et bestemt id. Lad den være tilgængelig på en adresse af følgende type: /user/:id/.

Задание 3

I controlleren UserController, lav handlingen info, som vil vise navnet eller alderen for den givne bruger. Lad denne handling være tilgængelig på en adresse af følgende type: /user/:id/:key/, hvor key vil have værdien 'name', 'age' eller 'salary'.

Задание 4

I controlleren UserController, lav handlingen all, som vil vise listen over alle brugere på skærmen. Lad denne handling være tilgængelig på en adresse af følgende type: /user/all/ (der vil ikke være nogen parametre her).

Задание 5

I controlleren UserController, lav handlingen first, som vil vise listen over de N første brugere på skærmen. Lad denne handling være tilgængelig på en adresse af følgende type: /user/first/:n/, hvor parameteren vil være antallet af brugere, som skal vises på skærmen.