Implementering av en router i ett eget MVC-ramverk
Låt oss nu skriva en grund för klassen Router
i enlighet med våra anrop:
<?php
namespace Core;
class Router
{
private $routes;
public function getTrack($routes, $uri)
{
// kod kommer att vara här
}
}
?>
I metoden getTrack måste vi avgöra
vilken av routerna som motsvarar denna $uri.
För att göra detta måste vi gå igenom vår array med router
med en loop:
<?php
namespace Core;
class Router
{
public function getTrack($routes, $uri)
{
foreach ($routes as $route) {
// kontroll av $uri och $route
}
}
}
?>
Om någon rutt motsvarar URI:n, vi
måste få värdena för rutparametrarna
från denna URI och returnera ett objekt av klassen Track:
<?php
namespace Core;
class Router
{
public function getTrack($routes, $uri)
{
foreach ($routes as $route) {
if (kontroll av överensstämmelse mellan rutt och URI) {
$params = ; // behöver få parametrar från uri
return new Track($route->controller, $route->action, $params);
}
}
return new Track('error', 'notFound'); // om ingen rutt passar
}
}
?>
Kopiera min grund för klassen Router
och placera den i filen /core/Router.php.
Implementera den beskrivna klassen Router,
som returnerar ett objekt av klassen
Track som sitt resultat. Om du upplever svårigheter
(vilket är mycket troligt), titta i källkoden för
ramverket du studerade användningen av
MVC. Där i klassen Router hittar du
den saknade delen av implementeringen och mina kommentarer
till den.