Reitittimen toteutus omassa MVC-kehyksessä

Kirjoitetaan nyt luokan Router luonnos vastaamaan käyttämämme kutsut:

/core/Router.php<?php
  namespace Core;
  
  class Router
  {
    private $routes;
    
    public function getTrack($routes, $uri)
    {
      // tähän tulee koodi
    }
  }
?>

Metodissa getTrack meidän on määritettävä, mikä reiteistä vastaa annettua $uri:a. Tätä varten meidän on käytävä läpi reittitaulukkomme silmukalla:

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

Jos jokin reitti vastaa URI:ta, meidän tulee saada tästä URI:sta reitin parametrien arvot ja palauttaa luokan Track olio:

/core/Router.php<?php
  namespace Core;
  
  class Router
  {
    public function getTrack($routes, $uri)
    {
      foreach ($routes as $route) {
        if (reitin ja URI:n vastaavuuden tarkistus) {
          $params = ; // parametrit on saatava uri:sta
          return new Track($route->controller, $route->action, $params);
        }
      }
      
      return new Track('error', 'notFound'); // jos mikään reitti ei sovi
    }
  }
?>
Задание 1

Kopioi luokan Router luonnos ja sijoita se tiedostoon /core/Router.php.

Задание 2

Toteuta kuvattu luokka Router, joka palauttaa tuloksenaan luokan Track olion. Jos kohtaat vaikeuksia (mikä on hyvin todennäköistä), katso lähdekoodia MVC-kehyksestä, jota opit käyttämään. Sieltä löydät luokasta Router puuttuvan osan toteutuksesta ja kommenttini siihen.