Implementering av ruter i sitt eget MVC-rammeverk

La oss nå skrive skjelettet for klassen Router i henhold til våre kall:

/core/Router.php<?php
  namespace Core;
  
  class Router
  {
    private $routes;
    
    public function getTrack($routes, $uri)
    {
      // koden vil være her
    }
  }
?>

I metoden getTrack må vi avgjøre hvilken av rutene som tilsvarer denne $uri. For å gjøre dette må vi gå gjennom arrayet vårt med ruter med en løkke:

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

Hvis en rute tilsvarer URI, må vi hente verdiene til rutens parametere fra denne URI-en og returnere et objekt av klassen Track:

/core/Router.php<?php
  namespace Core;
  
  class Router
  {
    public function getTrack($routes, $uri)
    {
      foreach ($routes as $route) {
        if (sjekk av samsvar mellom rute og URI) {
          $params = ; // må hente parametere fra uri
          return new Track($route->controller, $route->action, $params);
        }
      }
      
      return new Track('error', 'notFound'); // hvis ingen ruter passer
    }
  }
?>
Задание 1

Kopier mitt skjelett for klassen Router og plasser den i filen /core/Router.php.

Задание 2

Implementer den beskrevne klassen Router, som returnerer et objekt av klassen Track som sitt resultat. Hvis du opplever vanskeligheter (noe som er svært sannsynlig), kan du se i kildekoden til rammeverket du studerte bruken av MVC fra. Der i klassen Router finner du den manglende delen av implementeringen og mine kommentarer til den.