Paraméterek alkalmazása útvonalakban MVC-ben PHP-ben

Nézzük meg az elmondottakat egy életszerűbb példán. Tegyük fel, hogy a mi PageController kontrollerünk tartalmaz egy oldaltömböt (ezeket az adatokat egy modellnek kellene visszaadnia, de a modellekkel még nem foglalkoztunk, ezért egyelőre legyenek az adatok egyszerűen a kontrollerben tárolva):

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

Készítsük el a show műveletet, amely kiírja a képernyőre egy adott sorszámú (id) oldalt:

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()
    {
      // itt jelenítjük meg az adott sorszámú oldalt
    }
  }
?>

Tegyük fel, hogy a /page/1/ cím meghívásakor az első oldal szövege jelenik meg, a /page/2/ cím meghívásakor - a második oldal szövege és így tovább. Készítsük el a megfelelő útvonalat:

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

Valósítsuk meg a leírt show metódust:

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'] ]; // kiírjuk az oldalt a sorszám alapján
    }
  }
?>
Задание 1

Valósítsa meg a UserController kontrollert, amely tartalmazza a következő tömböt:

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

A UserController kontrollerben készítsen egy show műveletet, amely kiírja a felhasználót egy adott id alapján. Legyen ez a művelet elérhető a következő alakú címen: /user/:id/.

Задание 3

A UserController kontrollerben készítsen egy info műveletet, amely kiírja a megadott felhasználó nevét vagy korát. Legyen ez a művelet elérhető a következő alakú címen: /user/:id/:key/, ahol a key értéke 'name', 'age' vagy 'salary' lehet.

Задание 4

A UserController kontrollerben készítsen egy all műveletet, amely kiírja az összes felhasználó listáját a képernyőre. Legyen ez a művelet elérhető a következő alakú címen: /user/all/ (itt nem lesznek semmilyen paraméterek).

Задание 5

A UserController kontrollerben készítsen egy first műveletet, amely kiírja az első N felhasználó listáját a képernyőre. Legyen ez a művelet elérhető a következő alakú címen: /user/first/:n/, ahol a paraméter a kiírandó felhasználók számát határozza meg.