PHP'деги MVC'деги роуттордо параметрлерди колдонуу

Келгиле, сүрөттөлгөн нерсени колдонууну чын өмүрдөгү мисалда көрөлү. Биздин контроллер 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 контроллеринде, белгилүү бир id боюнча колдонуучуну көрсөткөн show аракетин жасаңыз. Ал төмөнкү түрдөгү дарек менен жеткиликтүү болсун: /user/:id/.

Задание 3

UserController контроллеринде, берилген колдонуучунун атын же жашын көрсөткөн info аракетин жасаңыз. Бул аракет төмөнкү түрдөгү дарек менен жеткиликтүү болсун: /user/:id/:key/, бул жерде key 'name', 'age' же 'salary' маанисин алат.

Задание 4

UserController контроллеринде, бардык колдонуучулардын тизмесин экранга чыгарган all аракетин жасаңыз. Бул аракет төмөнкү түрдөгү дарек менен жеткиликтүү болсун: /user/all/ (бул жерде эч кандай параметрлер болбойт).

Задание 5

UserController контроллеринде, бирінчи N колдонуучулардын тизмесин экранга чыгарган first аракетин жасаңыз. Бул аракет төмөнкү түрдөгү дарек менен жеткиликтүү болсун: /user/first/:n/, бул жерде параметрде экранга чыгарылуучу колдонуучулардын саны көрсөтүлөт.