Implementace routeru ve vlastním MVC frameworku
Nyní si připravme kostru třídy Router
v souladu s našimi požadavky:
<?php
namespace Core;
class Router
{
private $routes;
public function getTrack($routes, $uri)
{
// zde bude kód
}
}
?>
V metodě getTrack musíme určit,
která z tras odpovídá danému $uri.
K tomu je potřeba projít naše pole s trasami
cyklem:
<?php
namespace Core;
class Router
{
public function getTrack($routes, $uri)
{
foreach ($routes as $route) {
// kontrola $uri a $route
}
}
}
?>
Pokud nějaká trasa odpovídá URI, měli
bychom z tohoto URI získat hodnoty parametrů
trasy a vrátit objekt třídy Track:
<?php
namespace Core;
class Router
{
public function getTrack($routes, $uri)
{
foreach ($routes as $route) {
if (kontrola shody trasy a URI) {
$params = ; // je potřeba získat parametry z uri
return new Track($route->controller, $route->action, $params);
}
}
return new Track('error', 'notFound'); // pokud žádná trasa nesedí
}
}
?>
Zkopírujte mou kostru třídy Router
a umístěte ji do souboru /core/Router.php.
Implementujte popsanou třídu Router,
která vrací objekt třídy
Track. Pokud narazíte na potíže
(což je velmi pravděpodobné), podívejte se do zdrojového
kódu frameworku, podle kterého jste se učili používat
MVC. Tam ve třídě Router najdete
chybějící část implementace a mé komentáře
k ní.