Utilisation des paramètres dans les routes en MVC en PHP

Examinons l'application de ce qui a été décrit sur un exemple plus concret. Supposons que notre contrôleur PageController contienne un tableau de pages (ces données devraient être fournies par le modèle, mais nous n'avons pas encore abordé les modèles, donc laissons les données stockées dans le contrôleur pour l'instant) :

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

Créons une action show qui affichera à l'écran la page avec un numéro spécifique (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()
    {
      // ici nous afficherons la page avec un numéro spécifique
    }
  }
?>

Supposons que l'accès à l'adresse /page/1/ affiche le texte de la première page, l'accès à l'adresse /page/2/ - le texte de la deuxième page, et ainsi de suite. Créons la route correspondante :

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

Implémentons la méthode décrite 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'] ]; // affiche la page par numéro
    }
  }
?>
Задание 1

Implémentez le contrôleur UserController, contenant le tableau suivant :

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

Dans le contrôleur UserController, créez une action show qui affichera l'utilisateur par un id spécifique. Qu'elle soit accessible via une adresse de type : /user/:id/.

Задание 3

Dans le contrôleur UserController, créez une action info qui affichera le nom ou l'âge d'un utilisateur donné. Que cette action soit accessible via une adresse de type : /user/:id/:key/, où key aura la valeur 'name', 'age' ou 'salary'.

Задание 4

Dans le contrôleur UserController, créez une action all qui affichera la liste de tous les utilisateurs à l'écran. Que cette action soit accessible via une adresse de type : /user/all/ (aucun paramètre ici).

Задание 5

Dans le contrôleur UserController, créez une action first qui affichera la liste des N premiers utilisateurs à l'écran. Que cette action soit accessible via une adresse de type : /user/first/:n/, où le paramètre contiendra le nombre d'utilisateurs à afficher à l'écran.