Implementácia routera vo vlastnom MVC frameworku
Poďme si teraz napísať náčrt triedy Router
v súlade s našimi volaniami:
<?php
namespace Core;
class Router
{
private $routes;
public function getTrack($routes, $uri)
{
// tu bude kód
}
}
?>
V metóde getTrack musíme určiť,
ktorá z rout zodpovedá danému $uri.
Na to je potrebné prechádzať naše pole s routami
cyklom:
<?php
namespace Core;
class Router
{
public function getTrack($routes, $uri)
{
foreach ($routes as $route) {
// kontrola $uri a $route
}
}
}
?>
Ak nejaká routa zodpovedá URI, my
musíme z tohto URI získať hodnoty parametrov
routy a vrátiť objekt triedy Track:
<?php
namespace Core;
class Router
{
public function getTrack($routes, $uri)
{
foreach ($routes as $route) {
if (kontrola zhody routy a URI) {
$params = ; // je potrebné získať parametre z uri
return new Track($route->controller, $route->action, $params);
}
}
return new Track('error', 'notFound'); // ak žiadna routa nesedí
}
}
?>
Skopírujte môj náčrt triedy Router
a umiestnite ho do súboru /core/Router.php.
Implementujte popísanú triedu Router,
ktorá vráti objekt triedy
Track ako výsledok. Ak budete mať ťažkosti
(čo je veľmi pravdepodobné), pozrite sa do zdrojového
kódu frameworku, podľa ktorého ste študovali používanie
MVC. Tam v triede Router nájdete
chýbajúcu časť implementácie a moje komentáre
k nej.