การใช้พารามิเตอร์ในเส้นทางใน 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/ โดยในพารามิเตอร์ จะเป็นจำนวนผู้ใช้ที่ควร แสดงบนหน้าจอ