Разработка роутера в своем MVC фреймворке
Теперь вам нужно разработать роутер. Он представляет собой класс, который будет брать массив роутов, брать запрошенный URL, и определять, какой из роутов соответствует данному урл. После нахождения соответствующего роута наш класс должен получить части URL, соответствующие параметрам роута.
Пусть своим результатом наш роутер возвращает
объект класса Track, содержащего имя
контроллера, который должен быть вызван на
данный запрос, имя действия и параметры из URL.
Пусть наш класс Track имеет свойства
controller, action и params,
доступные только для чтения:
<?php
namespace Core;
class Track
{
private $controller;
private $action;
private $params;
public function __construct($controller, $action, $params)
{
$this->controller = $controller;
$this->action = $action;
$this->params = $params;
}
public function __get($property)
{
return $this->$property;
}
}
?>
Пример
Для примера, пусть в адресной строке вбито
/test/1/2/. Пусть у нас есть роут,
соответствующий этому адресу:
<?php
new Route('/test/:var1/:var2/', 'test', 'index');
?>
Это значит, что имя контроллера будет test,
имя действия - index, а массив параметров
будет следующий:
<?php
['var1' => 1, 'var2' => 2]
?>
Цель данного урока - написать класс Router,
возвращающий объект класса Track.
Остальное нас пока не касается. Давайте приступим
к написанию этого класса.
Практические задачи
Скопируйте код моего класса Track
и разместите его в файле
/core/Track.php.