Implementatie van een router in je eigen MVC-framework

Laten we nu een schets maken van de klasse Router volgens onze aanroepen:

/core/Router.php<?php
  namespace Core;
  
  class Router
  {
    private $routes;
    
    public function getTrack($routes, $uri)
    {
      // hier komt de code
    }
  }
?>

In de methode getTrack moeten we bepalen welke van de routes overeenkomt met de gegeven $uri. Hiervoor moeten we onze array met routes doorlopen met een loop:

/core/Router.php<?php
  namespace Core;
  
  class Router
  {
    public function getTrack($routes, $uri)
    {
      foreach ($routes as $route) {
        // controle van $uri en $route
      }
    }
  }
?>

Als een route overeenkomt met de URI, moeten we de waarden van de routeparameters uit deze URI halen en een object van de klasse Track teruggeven:

/core/Router.php<?php
  namespace Core;
  
  class Router
  {
    public function getTrack($routes, $uri)
    {
      foreach ($routes as $route) {
        if (controle van overeenkomst route en URI) {
          $params = ; // parameters moeten uit uri worden gehaald
          return new Track($route->controller, $route->action, $params);
        }
      }
      
      return new Track('error', 'notFound'); // als geen enkele route past
    }
  }
?>
Задание 1

Kopieer mijn schets van de klasse Router en plaats deze in het bestand /core/Router.php.

Задание 2

Implementeer de beschreven klasse Router, die als resultaat een object van de klasse Track teruggeeft. Als je problemen ondervindt (wat zeer waarschijnlijk is), kijk dan in de broncode van het framework waarmee je het gebruik van MVC hebt bestudeerd. Daar vind je in de klasse Router het ontbrekende deel van de implementatie en mijn commentaar daarop.