Öz MVC çärimiziň üçin router-iň işlenip taýýarlanylmagy

Indi siz router işläp taýýarlamaly. Ol, massiw ýollary alyp, haýyş edilen URL-i alyp, we haýsy ýolunyň bu URL-e gabat gelýändigini kesgitleýän klasdyr. Gabat gelýän ýol tapylan soň, bizim klasymyz ýol parametrlerine gabat gelýän URL böleklerini alyp bilmelidir.

Bizim router-iň netijesi, Track klasynyň obýekti bolsun, ony çagyrmaly kontrolleriň adyny, hereketiň adyny we URL-den gelen parametrleri öz içine alýan.

Bizim Track klasymyz, diňe okalýan hökmünde elýeterli bolan, controller, action we params aýratynlyklaryna eýe bolsun:

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

Mysal

Mysal üçin, salgydyr setirine /test/1/2/ girizildi diýeliň. Bizde bu salgydyr gabat gelýän ýol bar diýeliň:

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

Bu, kontrolleriň ady test, hereketiň ady - index, we parametrleriň massiw aşakdaky ýaly bolar diýän manyny berýär:

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

Bu sapagyň maksady, Track klasynyň obýektini gaýtaryp berýän Router klasyny ýazmakdyr. Galan zatlar bizi häzirik wagtda degişli däl. Geliň bu klasy ýazmaga başlalyň.

Amaly wezipeler

Задание 1

Meniň Track klasymyň kodyny göçürip alyň we ony /core/Track.php faýlynda ýerleşdiriň.