Implementacja routera we własnym frameworku MVC
Teraz napiszmy szablon klasy Router
zgodnie z naszymi wywołaniami:
<?php
namespace Core;
class Router
{
private $routes;
public function getTrack($routes, $uri)
{
// tutaj będzie kod
}
}
?>
W metodzie getTrack musimy określić,
która z tras odpowiada podanemu $uri.
Aby to zrobić, należy przejść pętlą przez
naszą tablicę z trasami:
<?php
namespace Core;
class Router
{
public function getTrack($routes, $uri)
{
foreach ($routes as $route) {
// sprawdzenie $uri i $route
}
}
}
?>
Jeśli jakaś trasa odpowiada URI, powinniśmy
pobrać z tego URI wartości parametrów
trasy i zwrócić obiekt klasy Track:
<?php
namespace Core;
class Router
{
public function getTrack($routes, $uri)
{
foreach ($routes as $route) {
if (sprawdzenie zgodności trasy i URI) {
$params = ; // należy pobrać parametry z uri
return new Track($route->controller, $route->action, $params);
}
}
return new Track('error', 'notFound'); // jeśli żadna trasa nie pasuje
}
}
?>
Skopiuj mój szablon klasy Router
i umieść go w pliku /core/Router.php.
Zaimplementuj opisaną klasę Router,
zwracającą jako wynik obiekt klasy
Track. Jeśli napotkasz trudności
(co jest bardzo prawdopodobne), zajrzyj do kodu źródłowego
frameworka, na podstawie którego uczyłeś się używać
MVC. Tam w klasie Router znajdziesz
brakującą część implementacji i moje komentarze
do niej.