Implementazione del router nel proprio framework MVC

Ora scriviamo la bozza della classe Router in conformità con le nostre chiamate:

/core/Router.php<?php
  namespace Core;
  
  class Router
  {
    private $routes;
    
    public function getTrack($routes, $uri)
    {
      // qui ci sarà il codice
    }
  }
?>

Nel metodo getTrack dobbiamo determinare quale delle rotte corrisponde a questo $uri. Per fare questo, dobbiamo scorrere il nostro array di rotte con un ciclo:

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

Se una rotta corrisponde all'URI, noi dobbiamo ottenere da questo URI i valori dei parametri della rotta e restituire un oggetto della classe Track:

/core/Router.php<?php
  namespace Core;
  
  class Router
  {
    public function getTrack($routes, $uri)
    {
      foreach ($routes as $route) {
        if (verifica corrispondenza rotta e URI) {
          $params = ; // bisogna ottenere i parametri dall'uri
          return new Track($route->controller, $route->action, $params);
        }
      }
      
      return new Track('error', 'notFound'); // se nessuna rotta corrisponde
    }
  }
?>
Задание 1

Copiate la mia bozza della classe Router e posizionatela nel file /core/Router.php.

Задание 2

Implementate la classe Router come descritto, che restituisca come risultato un oggetto della classe Track. Se incontrate difficoltà (cosa piuttosto probabile), guardate il codice sorgente del framework con cui avete studiato l'utilizzo di MVC. Lì, nella classe Router, troverete la parte mancante dell'implementazione e i miei commenti relativi.