Öz MVC çərçivəsində routerin hazırlanması

İndi siz router hazırlamalısınız. O, marşrutlar massivini götürəcək, sorğu edilən URL-i götürəcək və hansı marşrutun verilmiş url-ə uyğun olduğunu təyin edəcək bir sinifdir. Uyğun marşrut tapıldıqdan sonra bizim sinifimiz URL-in, marşrut parametrlərinə uyğun gələn hissələrini əldə etməlidir.

Qoy bizim routerimiz nəticə olaraq, bu sorğu üçün çağırılmalı olan nəzarətçinin adını, əməliyyatın adını və URL-dən olan parametrləri ehtiva edən Track sinfi obyektini qaytarsın.

Qoy bizim Track sinfimiz yalnız oxumaq üçün əlçatan olan controller, action və params xüsusiyyətlərinə malik olsun:

/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;
    }
  }
?>

Nümunə

Nümunə üçün, fərz edək ki, ünvan sətirinə /test/1/2/ yazılıb. Fərz edək ki, bizdə bu ünvana uyğun gələn bir marşrut var:

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

Bu o deməkdir ki, nəzarətçinin adı test olacaq, əməliyyatın adı - index, parametrlər massivi isə aşağıdakı kimi olacaq:

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

Bu dərsin məqsədi Track sinfinin obyektini qaytaran Router sinfini yazmaqdır. Qalanları hələlik bizi aid etmir. Gəlin bu sinfi yazmağa başlayaq.

Praktiki tapşırıqlar

Задание 1

Mənim Track sinfimin kodunu köçürün və onu /core/Track.php faylında yerləşdirin.