Matumizi ya Vigezo katika Njia za MVC katika PHP

Wacha tuangalie matumizi ya yaliyoelezwa kwenye mfano wa kuishi zaidi. Hebu kidhibiti chetu PageController kiwe na safu ya kurasa (data hii inapaswa kutolewa na model, lakini bado hatujachambua models, kwa hivyo hebu data kwa sasa ihifadhiwe kwenye kidhibiti):

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

Wacha tufanye kitendo show, ambacho kitaonyesha kwenye skrini ukurasa wenye nambari fulani (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()
    {
      // hapa tutaonyesha ukurasa wenye nambari fulani
    }
  }
?>

Hebu wakati wa kuhudumia anwani /page/1/ maandishi ya ukurasa wa kwanza yaonyeshwe, wakati wa kuhudumia anwani /page/2/ - maandishi ya ukurasa wa pili na kadhalika. Tufanye njia inayofanana:

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

Tutekeleze mbinu iliyoelezwa 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'] ]; // ona ukurasa kwa nambari
    }
  }
?>
Задание 1

Tekeleza kidhibiti UserController, kinachokuwa na safu ifuatayo:

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

Katika kidhibiti UserController, fanya kitendo show, ambacho kitaonyesha mtumiaji kulingana na id fulani. Hebu kitendo hiki kiwe patikanaye kwa anwani ya aina ifuatayo: /user/:id/.

Задание 3

Katika kidhibiti UserController, fanya kitendo info, ambacho kitaonyesha jina au umri wa mtumiaji aliyepewa. Hebu kitendo hiki kiwe patikanaye kwa anwani ya aina ifuatayo: /user/:id/:key/, ambapo key itakuwa na thamani 'name', 'age' au 'salary'.

Задание 4

Katika kidhibiti UserController, fanya kitendo all, ambacho kitaonyesha orodha ya watumiaji wote kwenye skrini. Hebu kitendo hiki kiwe patikanaye kwa anwani ya aina ifuatayo: /user/all/ (hakuna vigezo hapa).

Задание 5

Katika kidhibiti UserController, fanya kitendo first, ambacho kitaonyesha orodha ya watumiaji N wa kwanza kwenye skrini. Hebu kitendo hiki kiwe patikanaye kwa anwani ya aina ifuatayo: /user/first/:n/, ambapo kwenye kigezo itakuwa idadi ya watumiaji, ambao inapaswa kuonyeshwa kwenye skrini.