Роутерро дар framework-и 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 ҷойгир кунед.