Marsruuteri realiseerimine oma MVC raamistikus
Kirjutame nüüd klassi Router
mustri vastavalt meie väljakutsetele:
<?php
namespace Core;
class Router
{
private $routes;
public function getTrack($routes, $uri)
{
// siin on kood
}
}
?>
Meetodis getTrack peame määratlema,
milline marsruutidest vastab antud $uri-le.
Selleks peame läbi käima oma massiivi marsruutidega
tsükliga:
<?php
namespace Core;
class Router
{
public function getTrack($routes, $uri)
{
foreach ($routes as $route) {
// kontrolli $uri ja $route
}
}
}
?>
Kui mõni marsruut vastab URI-le, me
peame saama sellest URI-st parameetrite väärtused
ja tagastama klassi Track objekti:
<?php
namespace Core;
class Router
{
public function getTrack($routes, $uri)
{
foreach ($routes as $route) {
if (marsruudi ja URI vastavuse kontroll) {
$params = ; // vaja saada parameetrid uri-st
return new Track($route->controller, $route->action, $params);
}
}
return new Track('error', 'notFound'); // kui ükski marsruut ei sobi
}
}
?>
Kopeerige minu klassi Router mustrit
ja asetage see faili /core/Router.php.
Realiseerige kirjeldatud klass Router,
mille tulemusena tagastatakse klassi
Track objekt. Kui te tekitate raskusi
(mis on üsna tõenäoline), vaadake lähtekoodi
raamistikust, mida te kasutasite MVC kasutamise
õppimiseks. Sealt leiate klassis Router
puuduva realisatsiooni osa ja minu kommentaarid
selle kohta.