Implementering van 'n roeteaanwyser in jou eie MVC-raamwerk

Laat ons nou die basiese klas Router skryf in ooreenstemming met ons oproepe:

/core/Router.php<?php
  namespace Core;
  
  class Router
  {
    private $routes;
    
    public function getTrack($routes, $uri)
    {
      // kode sal hier wees
    }
  }
?>

In die metode getTrack moet ons bepaal watter roete ooreenstem met die gegewe $uri. Om dit te doen, moet ons ons roetelys deurloop met 'n lus:

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

As 'n roete ooreenstem met die URI, moet ons die waardes van die roeteparameters van hierdie URI kry en 'n objek van die klas Track terugstuur:

/core/Router.php<?php
  namespace Core;
  
  class Router
  {
    public function getTrack($routes, $uri)
    {
      foreach ($routes as $route) {
        if (kontroleer of roete en URI ooreenstem) {
          $params = ; // moet parameters van uri kry
          return new Track($route->controller, $route->action, $params);
        }
      }
      
      return new Track('error', 'notFound'); // as geen roete pas nie
    }
  }
?>
Задание 1

Kopieer my basiese klas Router en plaas dit in die lêer /core/Router.php.

Задание 2

Implementeer die beskryfde klas Router, wat 'n objek van die klas Track as sy resultaat teruggee. As jy sukkel (wat baie waarskynlik is), kyk in die bronkode van die raamwerk waarmee jy die gebruik van MVC bestudeer het. Daar in die klas Router sal jy die ontbrekende deel van die implementering en my kommentaar daaroor vind.