Разработка на рутер в собствен MVC фреймуърк
Сега трябва да разработите рутер. Той представлява клас, който ще взима масив от маршрути, взима заявления URL, и определя кой от маршрутите съответства на дадения 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.