Razvoj ruteru u sopstvenom MVC frejmvorku

Sada treba da razvijete ruter. On predstavlja klasu koja će uzeti niz ruta, uzeti traženi URL, i odrediti koja od ruta odgovara datom URL-u. Nakon pronalaženja odgovarajuće rute, naša klasa treba da dobije delove URL-a koji odgovaraju parametrima rute.

Neka naš ruter kao rezultat vraća objekat klase Track, koji sadrži ime kontrolera koji treba biti pozvan za ovaj zahtev, ime akcije i parametre iz URL-a.

Neka naša klasa Track ima svojstva controller, action i params, dostupna samo za čitanje:

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

Primer

Na primer, neka je u adresnoj traci uneto /test/1/2/. Pretpostavimo da imamo rutu, koja odgovara ovoj adresi:

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

Ovo znači da će ime kontrolera biti test, ime akcije - index, a niz parametara biće sledeći:

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

Cilj ove lekcije je napisati klasu Router, koja vraća objekat klase Track. Ostalo nas za sada ne tiče. Hajde da počnemo pisanje ove klase.

Praktični zadaci

Задание 1

Kopirajte kod moje klase Track i postavite ga u fajl /core/Track.php.