Utilizzo dei parametri nelle rotte in MVC in PHP

Esaminiamo l'applicazione di quanto descritto in un esempio più realistico. Supponiamo che il nostro controller PageController contenga un array di pagine (questi dati dovrebbero essere forniti dal model, ma non abbiamo ancora approfondito i model, quindi per il momento i dati sono semplicemente memorizzati nel 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',
      ];
    }
  }
?>

Creiamo un'azione show che visualizzi a schermo la pagina con un determinato numero (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()
    {
      // qui visualizzeremo la pagina con il numero specificato
    }
  }
?>

Supponiamo che quando si accede all'URL /page/1/ venga visualizzato il testo della prima pagina, quando si accede all'URL /page/2/ - il testo della seconda pagina e così via. Creiamo la rotta corrispondente:

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

Implementiamo il metodo show descritto:

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'] ]; // visualizziamo la pagina per numero
    }
  }
?>
Задание 1

Implementate il controller UserController, contenente il seguente array:

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

Nel controller UserController, create un'azione show, che visualizzi l'utente in base a un determinato id. Supponete che essa sia accessibile tramite un URL del tipo: /user/:id/.

Задание 3

Nel controller UserController, create un'azione info, che visualizzi il nome o l'età di un determinato utente. Supponete che questa azione sia accessibile tramite un URL del tipo: /user/:id/:key/, dove key avrà valore 'name', 'age' o 'salary'.

Задание 4

Nel controller UserController, create un'azione all, che visualizzi l'elenco di tutti gli utenti a schermo. Supponete che questa azione sia accessibile tramite un URL del tipo: /user/all/ (qui non ci saranno parametri).

Задание 5

Nel controller UserController, create un'azione first, che visualizzi l'elenco dei primi N utenti a schermo. Supponete che questa azione sia accessibile tramite un URL del tipo: /user/first/:n/, dove nel parametro ci sarà il numero di utenti da visualizzare a schermo.