Implémentation d'un routeur dans son propre framework MVC
Écrivons maintenant l'ébauche de la classe Router
conformément à nos appels :
<?php
namespace Core;
class Router
{
private $routes;
public function getTrack($routes, $uri)
{
// le code sera ici
}
}
?>
Dans la méthode getTrack, nous devons déterminer
laquelle des routes correspond à cet $uri.
Pour cela, il faut parcourir notre tableau de routes
avec une boucle :
<?php
namespace Core;
class Router
{
public function getTrack($routes, $uri)
{
foreach ($routes as $route) {
// vérification de $uri et $route
}
}
}
?>
Si une route correspond à l'URI, nous
devons obtenir les valeurs des paramètres
de cette URI et retourner un objet de la classe Track :
<?php
namespace Core;
class Router
{
public function getTrack($routes, $uri)
{
foreach ($routes as $route) {
if (vérification de la correspondance entre la route et l'URI) {
$params = ; // il faut obtenir les paramètres de l'uri
return new Track($route->controller, $route->action, $params);
}
}
return new Track('error', 'notFound'); // si aucune route ne convient
}
}
?>
Copiez mon ébauche de la classe Router
et placez-la dans le fichier /core/Router.php.
Implémentez la classe Router décrite,
qui doit retourner comme résultat un objet de la classe
Track. Si vous rencontrez des difficultés
(ce qui est très probable), regardez le code source
du framework que vous avez utilisé pour apprendre l'utilisation
de MVC. Là, dans la classe Router, vous trouverez
la partie manquante de l'implémentation et mes commentaires
à son sujet.