Primer parametara u rutama u MVC u PHP

Pogledajmo primenu opisanog na realističnijem primeru. Neka naš kontroler PageController sadrži niz stranica (ove podatke bi trebao da vraća model, ali sa modelima još nismo detaljno prošli, pa neka podaci za sada budu samo u kontroleru):

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

Napravimo akciju show, koja će prikazati stranicu sa određenim brojem (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()
    {
      // ovde ćemo prikazati stranicu po određenom broju
    }
  }
?>

Neka pristup adresi /page/1/ prikazuje tekst prve stranice, pristup adresi /page/2/ - tekst druge stranice, itd. Napravimo odgovarajuću rutu:

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

Implementirajmo opisani metod 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'] ]; // prikazujemo stranicu po broju
    }
  }
?>
Задание 1

Implementirajte kontroler UserController, koji sadrži sledeći niz:

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

U kontroleru UserController, napravite akciju show, koja će prikazivati korisnika po određenom id. Neka bude dostupna na adresi sledećeg oblika: /user/:id/.

Задание 3

U kontroleru UserController, napravite akciju info, koja će prikazivati ime ili godine određenog korisnika. Neka ova akcija bude dostupna na adresi sledećeg oblika: /user/:id/:key/, gde će key imati vrednost 'name', 'age' ili 'salary'.

Задание 4

U kontroleru UserController, napravite akciju all, koja će prikazivati listu svih korisnika na ekranu. Neka ova akcija bude dostupna na adresi sledećeg oblika: /user/all/ (ovde neće biti parametara).

Задание 5

U kontroleru UserController, napravite akciju first, koja će prikazivati listu prvih N korisnika na ekranu. Neka ova akcija bude dostupna na adresi sledećeg oblika: /user/first/:n/, gde će u parametru biti broj korisnika koje treba prikazati na ekranu.