Utvikling av en router i ditt eget MVC-rammeverk

Nå må du utvikle en router. Den representerer en klasse som vil ta en array med ruter, ta den forespurte URL-en, og avgjøre hvilken av rutene som tilsvarer denne URL-en. Etter å ha funnet den tilsvarende ruten, må klassen vår hente deler av URL-en som tilsvarer rutens parametere.

La vår router returnere et objekt av klassen Track som resultat, som inneholder navnet på kontrolleren som skal kalles for denne forespørselen, navnet på handlingen og parametere fra URL-en.

La klassen vår Track ha egenskapene controller, action og params, som kun er lesbare:

/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;
    }
  }
?>

Eksempel

La oss som eksempel si at adresselinjen har /test/1/2/. La oss si at vi har en rute, som tilsvarer denne adressen:

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

Dette betyr at kontrollerens navn vil være test, handlingens navn - index, og parameter-arrayen vil være som følger:

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

Målet med denne leksjonen er å skrive klassen Router, som returnerer et objekt av klassen Track. Resten angår oss ikke foreløpig. La oss begynne å skrive denne klassen.

Praktiske oppgaver

Задание 1

Kopier koden til min klasse Track og plasser den i filen /core/Track.php.