Սեփական MVC ֆրեյմվորկում ռուտերի մշակում

Այժմ ձեզ անհրաժեշտ է մշակել ռուտեր: Այն ներկայացնում է դաս, որն ընդունում է ռուտերի զանգված, վերցնում է հարցված URL-ը, և որոշում, թե որ ռուտերն է համապատասխանում tվերոնշյալ url-ին: Համապատասխան ռուտը գտնելուց հետո մեր դասը պետք է ստանա URL-ի այն մասերը, որոնք համապատասխանում են ռուտի պարամետրերին:

Թող մեր ռուտերը արդյունքում վերադարձնի Track դասի օբյեկտ, որը պարունակում է այն կոնտրոլերի անունը, որն պետք է կանչվի tվերոնշյալ հարցման համար, գործողության անունը և պարամետրերը 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 դասի օբյեկտ: Մնացածը մեզ առայժմ չի concerneում: Եկեք սկսենք գրել այս դասը:

Գործնական առաջադրանքներ

Задание 1

Պատճենեք իմ Track դասի կոդը և տեղադրեք այն ֆայլում /core/Track.php: