offline version v3
Запись на курсы по HTML, CSS, JavaScript, PHP, фреймворкам и CMS,
а также: помощь в поиске работы и заказов, стажировка на реальных проектах→
⊗ppOpDFmRrIm 171 of 179 menu

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