Marsruuteri realiseerimine oma MVC raamistikus

Kirjutame nüüd klassi Router mustri vastavalt meie väljakutsetele:

/core/Router.php<?php
  namespace Core;
  
  class Router
  {
    private $routes;
    
    public function getTrack($routes, $uri)
    {
      // siin on kood
    }
  }
?>

Meetodis getTrack peame määratlema, milline marsruutidest vastab antud $uri-le. Selleks peame läbi käima oma massiivi marsruutidega tsükliga:

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

Kui mõni marsruut vastab URI-le, me peame saama sellest URI-st parameetrite väärtused ja tagastama klassi Track objekti:

/core/Router.php<?php
  namespace Core;
  
  class Router
  {
    public function getTrack($routes, $uri)
    {
      foreach ($routes as $route) {
        if (marsruudi ja URI vastavuse kontroll) {
          $params = ; // vaja saada parameetrid uri-st
          return new Track($route->controller, $route->action, $params);
        }
      }
      
      return new Track('error', 'notFound'); // kui ükski marsruut ei sobi
    }
  }
?>
Задание 1

Kopeerige minu klassi Router mustrit ja asetage see faili /core/Router.php.

Задание 2

Realiseerige kirjeldatud klass Router, mille tulemusena tagastatakse klassi Track objekt. Kui te tekitate raskusi (mis on üsna tõenäoline), vaadake lähtekoodi raamistikust, mida te kasutasite MVC kasutamise õppimiseks. Sealt leiate klassis Router puuduva realisatsiooni osa ja minu kommentaarid selle kohta.