Implementatie van een router in je eigen MVC-framework
Laten we nu een schets maken van de klasse Router
volgens onze aanroepen:
<?php
namespace Core;
class Router
{
private $routes;
public function getTrack($routes, $uri)
{
// hier komt de code
}
}
?>
In de methode getTrack moeten we bepalen
welke van de routes overeenkomt met de gegeven $uri.
Hiervoor moeten we onze array met routes
doorlopen met een loop:
<?php
namespace Core;
class Router
{
public function getTrack($routes, $uri)
{
foreach ($routes as $route) {
// controle van $uri en $route
}
}
}
?>
Als een route overeenkomt met de URI, moeten we
de waarden van de routeparameters uit deze URI
halen en een object van de klasse Track teruggeven:
<?php
namespace Core;
class Router
{
public function getTrack($routes, $uri)
{
foreach ($routes as $route) {
if (controle van overeenkomst route en URI) {
$params = ; // parameters moeten uit uri worden gehaald
return new Track($route->controller, $route->action, $params);
}
}
return new Track('error', 'notFound'); // als geen enkele route past
}
}
?>
Kopieer mijn schets van de klasse Router
en plaats deze in het bestand /core/Router.php.
Implementeer de beschreven klasse Router,
die als resultaat een object van de klasse
Track teruggeeft. Als je problemen ondervindt
(wat zeer waarschijnlijk is), kijk dan in de broncode
van het framework waarmee je het gebruik van MVC
hebt bestudeerd. Daar vind je in de klasse Router
het ontbrekende deel van de implementatie en mijn
commentaar daarop.