Имплементация на рутер в собствен MVC фреймуърк

Нека сега напишем скицата на класа Router в съответствие с нашите изисквания:

/core/Router.php<?php
  namespace Core;
  
  class Router
  {
    private $routes;
    
    public function getTrack($routes, $uri)
    {
      // тук ще има код
    }
  }
?>

В метода getTrack трябва да определим кой от маршрутите съответства на дадения $uri. За това трябва да преминем през масива с маршрути с цикъл:

/core/Router.php<?php
  namespace Core;
  
  class Router
  {
    public function getTrack($routes, $uri)
    {
      foreach ($routes as $route) {
        // проверка на $uri и $route
      }
    }
  }
?>

Ако някой маршрут съответства на URI, ние трябва да получим от този URI стойностите на параметрите на маршрута и да върнем обект от клас Track:

/core/Router.php<?php
  namespace Core;
  
  class Router
  {
    public function getTrack($routes, $uri)
    {
      foreach ($routes as $route) {
        if (проверка за съответствие на маршрут и URI) {
          $params = ; // трябва да се получат параметрите от uri
          return new Track($route->controller, $route->action, $params);
        }
      }
      
      return new Track('error', 'notFound'); // ако никой маршрут не съвпадне
    }
  }
?>
Задание 1

Копирайте моята скица на класа Router и я поставете във файла /core/Router.php.

Задание 2

Имплементирайте описания клас Router, който връща като резултат обект от клас Track. Ако срещнете затруднения (което е много вероятно), погледнете в изходния код на фреймуърка, по който изучавахте използването на MVC. Там в класа Router ще намерите липсващата част от имплементацията и моите коментари към нея.