Uporaba parametrov v rutah v MVC v PHP

Poglejmo si uporabo opisanega na bolj življenjskem primeru. Naj naš krmilnik PageController vsebuje seznam strani (podatke bi morał vrniti model, vendar s modeli še nismo obravnavali, zato naj podatki za zdaj le shranjeni v krmilniku):

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

Naredimo dejanje show, ki bo izpisalo na zaslon stran z določeno številko (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()
    {
      // tukaj bomo prikazali stran z določeno številko
    }
  }
?>

Naj bo ob dostopu do naslova /page/1/ prikazano besedilo prve strani, ob dostopu do naslova /page/2/ - besedilo druge strani in tako naprej. Naredimo ustrezno pot:

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

Implementirajmo opisano metodo 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'] ]; // izpišemo stran po številki
    }
  }
?>
Задание 1

Implementirajte krmilnik UserController, ki vsebuje naslednji seznam:

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

V krmilniku UserController naredite dejanje show, ki bo prikazalo uporabnika po določenem id. Naj bo dostopno na naslednji naslov: /user/:id/.

Задание 3

V krmilniku UserController naredite dejanje info, ki bo prikazalo ime ali starost določenega uporabnika. Naj bo to dejanje dostopno na naslednji naslov: /user/:id/:key/, kjer bo key imel vrednost 'name', 'age' ali 'salary'.

Задание 4

V krmilniku UserController naredite dejanje all, ki bo prikazalo seznam vseh uporabnikov na zaslon. Naj bo to dejanje dostopno na naslednji naslov: /user/all/ (tukaj ne bo nobenih parametrov).

Задание 5

V krmilniku UserController naredite dejanje first, ki bo prikazalo seznam prvih N uporabnikov na zaslon. Naj bo to dejanje dostopno na naslednji naslov: /user/first/:n/, kjer bo v parametru število uporabnikov, ki jih je treba prikazati na zaslonu.