Прымяненне параметраў у роўтах у 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, якое будзе выводзіць карыстальніка па пэўным id. Хай яно будзе даступна па адрасу наступнага выгляду: /user/:id/.

Задание 3

У кантролеры UserController, зрабіце дзеянне info, якое будзе выводзіць імя або ўзрост зададзенага карыстальніка. Хай гэта дзеянне будзе даступна па адрасу наступнага выгляду: /user/:id/:key/, дзе key будзе мець значэнне 'name', 'age' ці 'salary'.

Задание 4

У кантролеры UserController, зрабіце дзеянне all, якое будзе выводзіць спіс усіх карыстальнікаў на экран. Хай гэта дзеянне будзе даступна па адрасу наступнага выгляду: /user/all/ (параметраў тут ніякіх не будзе).

Задание 5

У кантролеры UserController, зрабіце дзеянне first, якое будзе выводзіць спіс N першых карыстальнікаў на экран. Хай гэта дзеянне будзе даступна па адрасу наступнага выгляду: /user/first/:n/, дзе ў параметры будзе колькасць карыстальнікаў, якія варта вывесці на экран.