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]
?>

Бу дарснинг мақсади - Track класси объектини қайтарадиган Router классини ёзиш. Қолган нарсалар бизни шу пайтда кизиктирмайди. Келинг, шу классни ёзишни бошлаймиз.

Амалий вазифалар

Задание 1

Менинг Track классим кодин нусхалаб /core/Track.php файлига жойланг.