Реализация роутера в своем 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 вы найдете
недостающую часть реализации и мои комментарии
к ней.