Примена параметара у рутама у 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 => 'страница 1',
        2 => 'страница 2',
        3 => 'страница 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 => 'страница 1',
        2 => 'страница 2',
        3 => 'страница 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 => 'страница 1',
        2 => 'страница 2',
        3 => 'страница 3',
      ];
    }
    
    public function show($params)
    {
      echo $this->pages[ $params['id'] ]; // приказујемо страницу по броју
    }
  }
?>
Задание 1

Имплементирајте контролер UserController, који садржи следећи низ:

php<?php
  $this->users = [
    1 => ['name'=>'корисник1', 'age'=>'23', 'salary' => 1000],
    2 => ['name'=>'корисник2', 'age'=>'24', 'salary' => 2000],
    3 => ['name'=>'корисник3', 'age'=>'25', 'salary' => 3000],
    4 => ['name'=>'корисник4', 'age'=>'26', 'salary' => 4000],
    5 => ['name'=>'корисник5', '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/, где у параметру ће бити број корисника које треба приказати на екрану.