Implementarea routerului în propriul framework MVC

Haideți acum să scriem schița clasei Router în conformitate cu apelurile noastre:

/core/Router.php<?php
  namespace Core;
  
  class Router
  {
    private $routes;
    
    public function getTrack($routes, $uri)
    {
      // aici va fi codul
    }
  }
?>

În metoda getTrack trebuie să determinăm, care dintre rute corespunde acestui $uri. Pentru aceasta trebuie să parcurgem array-ul cu rute cu un ciclu:

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

Dacă o rută corespunde URI-ului, noi trebuie să obținem din acest URI valorile parametrilor rutei și să returnăm un obiect al clasei Track:

/core/Router.php<?php
  namespace Core;
  
  class Router
  {
    public function getTrack($routes, $uri)
    {
      foreach ($routes as $route) {
        if (verificarea corespondenței rutei și URI) {
          $params = ; // trebuie să obținem parametrii din uri
          return new Track($route->controller, $route->action, $params);
        }
      }
      
      return new Track('error', 'notFound'); // dacă nici o rută nu se potrivește
    }
  }
?>
Задание 1

Copiați schița mea a clasei Router și plasați-o în fișierul /core/Router.php.

Задание 2

Implementați clasa descrisă Router, returnând ca rezultat un obiect al clasei Track. Dacă veți întâmpina dificultăți (ceea ce este foarte probabil), uitați-vă în codul sursă al framework-ului după care ați studiat utilizarea MVC. Acolo în clasa Router veți găsi partea lipsă a implementării și comentariile mele la ea.