Implementarea routerului în propriul framework MVC
Haideți acum să scriem schița clasei Router
în conformitate cu apelurile noastre:
<?php
namespace Core;
class Router
{
private $routes;
public function getTrack($routes, $uri)
{
// aici va fi codul
}
}
?>
În metoda getTrack trebuie să determinăm,
care dintre rute corespunde acestui $uri.
Pentru aceasta trebuie să parcurgem array-ul cu rute
cu un ciclu:
<?php
namespace Core;
class Router
{
public function getTrack($routes, $uri)
{
foreach ($routes as $route) {
// verificarea $uri și $route
}
}
}
?>
Dacă o rută corespunde URI-ului, noi
trebuie să obținem din acest URI valorile parametrilor
rutei și să returnăm un obiect al clasei Track:
<?php
namespace Core;
class Router
{
public function getTrack($routes, $uri)
{
foreach ($routes as $route) {
if (verificarea corespondenței rutei și URI) {
$params = ; // trebuie să obținem parametrii din uri
return new Track($route->controller, $route->action, $params);
}
}
return new Track('error', 'notFound'); // dacă nici o rută nu se potrivește
}
}
?>
Copiați schița mea a clasei Router
și plasați-o în fișierul /core/Router.php.
Implementați clasa descrisă Router,
returnând ca rezultat un obiect al clasei
Track. Dacă veți întâmpina dificultăți
(ceea ce este foarte probabil), uitați-vă în codul sursă
al framework-ului după care ați studiat utilizarea
MVC. Acolo în clasa Router veți găsi
partea lipsă a implementării și comentariile mele
la ea.