Öz MVC çərçivəsində routerin realizasiyası

Indi isə bizim çağırışlarımıza uyğun olaraq Router sinfinin qablaşdırmasını yazaq:

/core/Router.php<?php
  namespace Core;
  
  class Router
  {
    private $routes;
    
    public function getTrack($routes, $uri)
    {
      // burada kod olacaq
    }
  }
?>

getTrack metodunda biz müəyyən etməliyik ki, verilmiş $uri üçün marşrutlardan hansı uyğun gəlir. Bunun üçün marşrutlar massivini dövrə ilə yoxlamalıyıq:

/core/Router.php<?php
  namespace Core;
  
  class Router
  {
    public function getTrack($routes, $uri)
    {
      foreach ($routes as $route) {
        // $uri və $route yoxlanışı
      }
    }
  }
?>

Əgər hansısa marşrut URI-ə uyğun gəlirsə, biz həmin URI-dən marşrut parametrlərinin dəyərlərini almalı və Track sinfinin obyektini qaytarmalıyıq:

/core/Router.php<?php
  namespace Core;
  
  class Router
  {
    public function getTrack($routes, $uri)
    {
      foreach ($routes as $route) {
        if (marşrut və URI uyğunluq yoxlanışı) {
          $params = ; // uri-dən parametrləri almaq lazımdır
          return new Track($route->controller, $route->action, $params);
        }
      }
      
      return new Track('error', 'notFound'); // heç bir marşrut uyğun gəlməzsə
    }
  }
?>
Задание 1

Router sinfinin qablaşdırmasını köçürün və onu /core/Router.php faylında yerləşdirin.

Задание 2

Təsvir olunan Router sinfini realizasiya edin, nəticə olaraq Track sinfinin obyektini qaytaran. Əgər çətinlik çəksəniz (bu çox ehtimaldır), istifadəsini öyrəndiyiniz MVC çərçivəsinin mənbə koduna baxın. Orada Router sinfində realizasiyanın çatışmayan hissəsini və mənim ona şərhlərimi tapacaqsınız.