Ontwikkeling van een router in je eigen MVC-framework

Nu moet je een router ontwikkelen. Het is een klasse die een array van routes neemt, de opgevraagde URL neemt, en bepaalt welke route overeenkomt met deze URL. Na het vinden van de bijbehorende route moet onze klasse de URL-onderdelen verkrijgen, die overeenkomen met de routeparameters.

Laat onze router als resultaat een object van de klasse Track teruggeven, bevat de naam van de controller die moet worden aangeroepen voor deze aanvraag, de naam van de actie en de parameters uit de URL.

Laat onze klasse Track eigenschappen hebben controller, action en params, alleen-lezen:

/core/Track.php<?php
  namespace Core;
  
  class Track
  {
    private $controller;
    private $action;
    private $params;
    
    public function __construct($controller, $action, $params)
    {
      $this->controller = $controller;
      $this->action = $action;
      $this->params = $params;
    }
    
    public function __get($property)
    {
      return $this->$property;
    }
  }
?>

Voorbeeld

Stel dat in de adresbalk is ingevoerd /test/1/2/. Stel dat we een route hebben, die overeenkomt met dit adres:

/project/config/routes.php<?php
  new Route('/test/:var1/:var2/', 'test', 'index');
?>

Dit betekent dat de controllernaam test zal zijn, de actienaam - index, en de parameterarray zal als volgt zijn:

php<?php
  ['var1' => 1, 'var2' => 2]
?>

Het doel van deze les is om een klasse Router te schrijven, die een object van de klasse Track teruggeeft. De rest raakt ons nog niet. Laten we beginnen met het schrijven van deze klasse.

Praktische taken

Задание 1

Kopieer de code van mijn klasse Track en plaats het in het bestand /core/Track.php.