Penerapan Parameter dalam Rute di MVC di PHP

Mari kita lihat penerapan yang dijelaskan pada contoh yang lebih nyata. Misalkan controller kita PageController berisi array halaman (data ini seharusnya dikembalikan oleh model, tetapi kita belum membahas model, jadi untuk sementara data hanya disimpan di controller):

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

Mari buat action show, yang akan menampilkan halaman dengan nomor tertentu (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()
    {
      // di sini kita akan menampilkan halaman dengan nomor tertentu
    }
  }
?>

Misalkan ketika mengakses alamat /page/1/ teks halaman pertama akan ditampilkan, ketika mengakses alamat /page/2/ - teks halaman kedua, dan seterusnya. Mari buat rute yang sesuai:

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

Mari implementasikan method show yang dijelaskan:

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'] ]; // tampilkan halaman berdasarkan nomor
    }
  }
?>
Задание 1

Implementasikan controller UserController, yang berisi array berikut:

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

Dalam controller UserController, buatlah action show, yang akan menampilkan user berdasarkan id tertentu. Misalkan action ini dapat diakses melalui alamat dengan bentuk berikut: /user/:id/.

Задание 3

Dalam controller UserController, buatlah action info, yang akan menampilkan nama atau usia user yang ditentukan. Misalkan action ini dapat diakses melalui alamat dengan bentuk berikut: /user/:id/:key/, di mana key akan memiliki nilai 'name', 'age' atau 'salary'.

Задание 4

Dalam controller UserController, buatlah action all, yang akan menampilkan daftar semua user ke layar. Misalkan action ini dapat diakses melalui alamat dengan bentuk berikut: /user/all/ (tidak ada parameter di sini).

Задание 5

Dalam controller UserController, buatlah action first, yang akan menampilkan daftar N user pertama ke layar. Misalkan action ini dapat diakses melalui alamat dengan bentuk berikut: /user/first/:n/, di mana dalam parameter akan terdapat jumlah user yang harus ditampilkan ke layar.