Implementação de roteador em seu próprio framework MVC
Vamos agora escrever o esboço da classe Router
de acordo com nossas chamadas:
<?php
namespace Core;
class Router
{
private $routes;
public function getTrack($routes, $uri)
{
// código será adicionado aqui
}
}
?>
No método getTrack, devemos determinar
qual das rotas corresponde ao $uri fornecido.
Para isso, precisamos percorrer nosso array de rotas
com um loop:
<?php
namespace Core;
class Router
{
public function getTrack($routes, $uri)
{
foreach ($routes as $route) {
// verificar $uri e $route
}
}
}
?>
Se alguma rota corresponder ao URI, nós
devemos obter desse URI os valores dos parâmetros
da rota e retornar um objeto da classe Track:
<?php
namespace Core;
class Router
{
public function getTrack($routes, $uri)
{
foreach ($routes as $route) {
if (verificação de correspondência entre rota e URI) {
$params = ; // precisa obter os parâmetros do uri
return new Track($route->controller, $route->action, $params);
}
}
return new Track('error', 'notFound'); // se nenhuma rota corresponder
}
}
?>
Copie meu esboço da classe Router
e coloque-o no arquivo /core/Router.php.
Implemente a classe Router descrita,
retornando como resultado um objeto da classe
Track. Se você tiver dificuldades
(o que é bastante provável), consulte o código-fonte
do framework pelo qual você estudou o uso do
MVC. Lá, na classe Router, você encontrará
a parte faltante da implementação e meus comentários
sobre ela.