Разработка роутера в своем MVC фреймворке в PHP
Теперь вам нужно разработать роутер. Он представляет собой класс, который будет брать массив роутов, брать запрошенный 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
.