Implementierung eines Routers in einem eigenen MVC-Framework
Lassen Sie uns nun einen Entwurf der Klasse Router
gemäß unseren Aufrufen schreiben:
<?php
namespace Core;
class Router
{
private $routes;
public function getTrack($routes, $uri)
{
// hier wird Code stehen
}
}
?>
In der Methode getTrack müssen wir bestimmen,
welche der Routen der gegebenen $uri entspricht.
Dazu müssen wir unser Array mit Routen in einer Schleife
durchgehen:
<?php
namespace Core;
class Router
{
public function getTrack($routes, $uri)
{
foreach ($routes as $route) {
// Prüfung von $uri und $route
}
}
}
?>
Wenn eine Route der URI entspricht, müssen wir
aus dieser URI die Werte der Routenparameter
erhalten und ein Objekt der Klasse Track
zurückgeben:
<?php
namespace Core;
class Router
{
public function getTrack($routes, $uri)
{
foreach ($routes as $route) {
if (Prüfung der Übereinstimmung von Route und URI) {
$params = ; // Parameter müssen aus der uri geholt werden
return new Track($route->controller, $route->action, $params);
}
}
return new Track('error', 'notFound'); // wenn keine Route passt
}
}
?>
Kopieren Sie meinen Entwurf der Klasse Router
und platzieren Sie ihn in der Datei /core/Router.php.
Implementieren Sie die beschriebene Klasse Router,
die als Ergebnis ein Objekt der Klasse Track
zurückgibt. Falls Sie auf Schwierigkeiten stoßen
(was sehr wahrscheinlich ist), schauen Sie im Quellcode
des Frameworks nach, anhand dessen Sie die Verwendung
von MVC gelernt haben. Dort finden Sie in der Klasse
Router den fehlenden Teil der Implementierung
und meine Kommentare dazu.