როუტერის შემუშავება საკუთარ 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.