Роутерро дар framework-и MVC-и худ сохтан

Акнун ба шумо лозим аст, ки роутер-ро сохта бароваред. Он як классест, ки массивроутҳоро мегирад, URL-и дархостшударо мегирад, ва муайян мекунад, ки кадом як аз роутҳо мувофиқат мекунад ба ин URL. Пас аз ёфтани роути мувофиқ класси мо бояд қисмҳои URL-ро гирад, ки ба параметрҳои роут мувофиқ меоянд.

Бигзор натиҷаи худ роутери мо объекти класи Track-ро баргардонад, ки номи контроллерро дар бар мегирад, ки бояд даъват карда шавад ба ин дархост, номи амал ва параметрҳо аз URL.

Бигзор класи мо Track хосиятҳои controller, action ва params-ро дошта бошад, ки танҳо барои хондан дастрасанд:

/core/Track.php<?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/. Бигзор мо роут дорем, ки ба ин нишона мувофиқат мекунад:

/project/config/routes.php<?php
  new Route('/test/:var1/:var2/', 'test', 'index');
?>

Ин маънои онро дорад, ки номи контроллер test хоҳад буд, номи амал - index, ва массиви параметрҳо инҳо хоҳанд буд:

php<?php
  ['var1' => 1, 'var2' => 2]
?>

Мақсади ин дарс - навиштани класи Router, ки объекти класи Track-ро бармегардонад. Дигар чизҳо то ҳол ба мо тааллуқ надоранд. Биёед оғоз кунем ба навиштани ин класс.

Вазифаҳои амалӣ

Задание 1

Рамзи класи ман Track-ро нусхабардорӣ кунед ва онро дар файли /core/Track.php ҷойгир кунед.