Marsruuteri arendamine oma MVC raamistikus

Nüüd peate arendama marsruuteri. See on klass, mis võtab marsruutide massiivi, võtab päritud URL-i, ja määrab, milline marsruut vastab antud URL-ile. Pärast vastava marsruudi leidmist peab meie klass saama URL-i osad, mis vastavad marsruudi parameetritele.

Olgu meie marsruuteri tulemuseks klassi Track objekt, mis sisaldab kontrolleri nime, mida peaks kutsuma antud päringule, tegevuse nime ja URL-i parameetreid.

Olgu meie klassi Track omadusteks controller, action ja params, millele on ainult lugemisõigus:

/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äide

Näiteks, oletame, et aadressiribale on sisestatud /test/1/2/. Oletame, et meil on marsruut, mis vastab sellele aadressile:

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

See tähendab, et kontrolleri nimi on test, tegevuse nimi - index, ja parameetrite massiiv on järgmine:

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

Selle õppetunni eesmärk on kirjutada klass Router, mis tagastab klassi Track objekti. Ülejäänu meid praegu ei puuduta. Hakkame kirjutama seda klassi.

Praktilised ülesanded

Задание 1

Kopeerige minu klassi Track kood ja asetage see faili /core/Track.php.