Implementazione del router nel proprio framework MVC
Ora scriviamo la bozza della classe Router
in conformità con le nostre chiamate:
<?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:
<?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:
<?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
}
}
?>
Copiate la mia bozza della classe Router
e posizionatela nel file /core/Router.php.
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.