Рэалізацыя роўтара ў сваім 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 вы знойдзеце недастаючую частку рэалізацыі і маё каментары да яе.