Өз MVC фреймворкуңуз үчүн роутерди ишке ашыруу

Эми биздин чакырууларыбызга ылайык Router класстын үлгүсүн жазалы:

/core/Router.php<?php
  namespace Core;
  
  class Router
  {
    private $routes;
    
    public function getTrack($routes, $uri)
    {
      // бул жерде код болот
    }
  }
?>

getTrack методунун ичинде биз, кайсы роут берилген $uriга туура келет, аныктоо керек. Бул үчүн биздин роуттар массивин цикл менен аралашыбыз керек:

/core/Router.php<?php
  namespace Core;
  
  class Router
  {
    public function getTrack($routes, $uri)
    {
      foreach ($routes as $route) {
        // $uri жана $route текшерүү
      }
    }
  }
?>

Эгерде кайсы бир роут URIга туура келсе, биз ошол URIдан роуттун параметрлеринин маанилерин алууга тийиш болобуз жана Track классынын объектин кайтарууга тийиш болобуз:

/core/Router.php<?php
  namespace Core;
  
  class Router
  {
    public function getTrack($routes, $uri)
    {
      foreach ($routes as $route) {
        if (роуттун жана URIнын дал келишин текшерүү) {
          $params = ; // uriден параметрлерди алуу керек
          return new Track($route->controller, $route->action, $params);
        }
      }
      
      return new Track('error', 'notFound'); // эгерде эч кайсы роут туура келбесе
    }
  }
?>
Задание 1

Router класстын менин үлгүмдү көчүрүп, аны /core/Router.php файлына жайгаштырыңыз.

Задание 2

Силерге сүрөттөлгөн Router классты ишке ашырыңыз, натыйжаңыз Track класстын объектин кайтарышы керек. Эгерде кыйынчылыктарды башыңыздан өткөрсөңүз (бул мүмкүн), анда сиз MVC колдонууну үйрөнгөн фреймворктун баштапкы кодуна карап көрүңүз. Ал жерден Router класстын ичинде ишке ашырылыштын жетпеген бөлүгүн жана ага болгон менин комментарийлеримди таба аласыз.