MVC da PHP da Routlarda Parametrlarni Qo'llash

Keling, tavsiflangan narsani amaliy misolda ko'rib chiqaylik. Faraz qilaylik, bizning PageController kontrollerimizda sahifalar massivi mavjud (ushbu ma'lumotlarni model topshirishi kerak, lekin biz hali modellar bilan tanishmaganmiz, shuning uchun hozircha ma'lumotlar kontrollerda saqlansin):

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

Keling, show amalini yarataylik, u ma'lum bir raqamli (id) sahifani ekranda ko'rsatadi:

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()
    {
      // bu yerda ma'lum bir raqamdagi sahifani ko'rsatamiz
    }
  }
?>

Faraz qilaylik, /page/1/ manziliga murojaat qilganda birinchi sahifa matni ko'rsatilsin, /page/2/ manziliga murojaat qilganda - ikkinchi sahifa matni va hokazo. Keling, mos keladigan routni yaratamiz:

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

Keling, tavsiflangan show metodini amalga oshiramiz:

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'] ]; // raqam bo'yicha sahifani ko'rsatamiz
    }
  }
?>
Задание 1

Quyidagi massivni o'z ichiga olgan UserController kontrollerini yarating:

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 kontrollerida, ma'lum bir id bo'yicha foydalanuvchini ko'rsatadigan show amalini yarating. U quyidagi ko'rinishdagi manzil orqali ochiq bo'lsin: /user/:id/.

Задание 3

UserController kontrollerida, berilgan foydalanuvchining ismi yoshi yoki maoshini ko'rsatadigan info amalini yarating. Ushbu amal quyidagi ko'rinishdagi manzil orqali ochiq bo'lsin: /user/:id/:key/, bu yerda key 'name', 'age' yoki 'salary' qiymatiga ega bo'ladi.

Задание 4

UserController kontrollerida, barcha foydalanuvchilar ro'yxatini ekranda ko'rsatadigan all amalini yarating. Ushbu amal quyidagi ko'rinishdagi manzil orqali ochiq bo'lsin: /user/all/ (bu yerda hech qanday parametr bo'lmaydi).

Задание 5

UserController kontrollerida, birinchi N ta foydalanuvchilar ro'yxatini ekranda ko'rsatadigan first amalini yarating. Ushbu amal quyidagi ko'rinishdagi manzil orqali ochiq bo'lsin: /user/first/:n/, bu yerda parametrda ekranda ko'rsatilishi kerak bo'lgan foydalanuvchilar soni bo'ladi.