Verwendung von Parametern in Routen in MVC in PHP

Lassen Sie uns die beschriebene Anwendung an einem lebensnäheren Beispiel betrachten. Nehmen wir an, unser Controller PageController enthält ein Array von Seiten (diese Daten sollten vom Model geliefert werden, aber mit Models haben wir uns noch nicht befasst, daher lassen Sie uns die Daten vorerst einfach im Controller speichern):

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

Lassen Sie uns eine Aktion show erstellen, die eine Seite mit einer bestimmten Nummer (id) auf dem Bildschirm anzeigen wird:

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()
    {
      // hier werden wir die Seite mit einer bestimmten Nummer anzeigen
    }
  }
?>

Nehmen wir an, dass beim Aufruf der Adresse /page/1/ der Text der ersten Seite ausgegeben wird, beim Aufruf der Adresse /page/2/ - der Text der zweiten Seite und so weiter. Erstellen wir die entsprechende Route:

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

Implementieren wir die beschriebene Methode 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'] ]; // Seite nach Nummer ausgeben
    }
  }
?>
Задание 1

Implementieren Sie den Controller UserController, der das folgende Array enthält:

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

Erstellen Sie im Controller UserController eine Aktion show, die einen Benutzer anhand einer bestimmten id anzeigt. Lassen Sie sie unter einer Adresse des folgenden Typs erreichbar sein: /user/:id/.

Задание 3

Erstellen Sie im Controller UserController eine Aktion info, die den Namen oder das Alter eines bestimmten Benutzers ausgibt. Lassen Sie diese Aktion unter einer Adresse des folgenden Typs erreichbar sein: /user/:id/:key/, wobei key den Wert 'name', 'age' oder 'salary' haben wird.

Задание 4

Erstellen Sie im Controller UserController eine Aktion all, die eine Liste aller Benutzer auf dem Bildschirm ausgibt. Lassen Sie diese Aktion unter einer Adresse des folgenden Typs erreichbar sein: /user/all/ (hier gibt es keine Parameter).

Задание 5

Erstellen Sie im Controller UserController eine Aktion first, die eine Liste der ersten N Benutzer auf dem Bildschirm ausgibt. Lassen Sie diese Aktion unter einer Adresse des folgenden Typs erreichbar sein: /user/first/:n/, wobei im Parameter die Anzahl der Benutzer steht, die auf dem Bildschirm ausgegeben werden sollen.