როუტერის იმპლემენტაცია საკუთარ 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 კლასში თქვენ იპოვით დაკარგულ იმპლემენტაციის ნაწილს და ჩემი კომენტარებს მასზე.