Имплементация на рутер в собствен MVC фреймуърк
Нека сега напишем скицата на класа Router
в съответствие с нашите изисквания:
<?php
namespace Core;
class Router
{
private $routes;
public function getTrack($routes, $uri)
{
// тук ще има код
}
}
?>
В метода getTrack трябва да определим
кой от маршрутите съответства на дадения $uri.
За това трябва да преминем през масива с маршрути
с цикъл:
<?php
namespace Core;
class Router
{
public function getTrack($routes, $uri)
{
foreach ($routes as $route) {
// проверка на $uri и $route
}
}
}
?>
Ако някой маршрут съответства на URI, ние
трябва да получим от този URI стойностите на параметрите
на маршрута и да върнем обект от клас Track:
<?php
namespace Core;
class Router
{
public function getTrack($routes, $uri)
{
foreach ($routes as $route) {
if (проверка за съответствие на маршрут и URI) {
$params = ; // трябва да се получат параметрите от uri
return new Track($route->controller, $route->action, $params);
}
}
return new Track('error', 'notFound'); // ако никой маршрут не съвпадне
}
}
?>
Копирайте моята скица на класа Router
и я поставете във файла /core/Router.php.
Имплементирайте описания клас Router,
който връща като резултат обект от клас
Track. Ако срещнете затруднения
(което е много вероятно), погледнете в изходния
код на фреймуърка, по който изучавахте използването
на MVC. Там в класа Router ще намерите
липсващата част от имплементацията и моите коментари
към нея.