Implementação de roteador em seu próprio framework MVC

Vamos agora escrever o esboço da classe Router de acordo com nossas chamadas:

/core/Router.php<?php
  namespace Core;
  
  class Router
  {
    private $routes;
    
    public function getTrack($routes, $uri)
    {
      // código será adicionado aqui
    }
  }
?>

No método getTrack, devemos determinar qual das rotas corresponde ao $uri fornecido. Para isso, precisamos percorrer nosso array de rotas com um loop:

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

Se alguma rota corresponder ao URI, nós devemos obter desse URI os valores dos parâmetros da rota e retornar um objeto da classe Track:

/core/Router.php<?php
  namespace Core;
  
  class Router
  {
    public function getTrack($routes, $uri)
    {
      foreach ($routes as $route) {
        if (verificação de correspondência entre rota e URI) {
          $params = ; // precisa obter os parâmetros do uri
          return new Track($route->controller, $route->action, $params);
        }
      }
      
      return new Track('error', 'notFound'); // se nenhuma rota corresponder
    }
  }
?>
Задание 1

Copie meu esboço da classe Router e coloque-o no arquivo /core/Router.php.

Задание 2

Implemente a classe Router descrita, retornando como resultado um objeto da classe Track. Se você tiver dificuldades (o que é bastante provável), consulte o código-fonte do framework pelo qual você estudou o uso do MVC. Lá, na classe Router, você encontrará a parte faltante da implementação e meus comentários sobre ela.