Разработка роутера в своем 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.



Чат с GPT Компилятор