Zhvillimi i router-it në MVC framework-un tuaj

Tani ju duhet të zhvilloni një router. Ai paraqet një klasë e cila do të marrë array-in e rrugëve, marrë URL-në e kërkuar, dhe të përcaktojë se cila prej rrugëve korrespondon me këtë url. Pas gjetjes së rrugës përkatëse klasa jonë duhet të marrë pjesët e URL-së, që korrespondojnë me parametrat e rrugës.

Le të kthejë si rezultat router-i ynë një objekt të klasës Track, që përmban emrin e kontrollerit i cili duhet të thirret për këtë kërkesë, emrin e veprimit dhe parametrat nga URL-ja.

Le të ketë klasa jonë Track vetitë controller, action dhe params, të disponueshme vetëm për lexim:

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

Shembull

Për shembull, le të themi se në shiritin e adresave është shënuar /test/1/2/. Le të themi se kemi një rrugë, që i përgjigjet kësaj adrese:

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

Kjo do të thotë se emri i kontrollerit do të jetë test, emri i veprimit - index, ndërsa array-i i parametrave do të jetë si më poshtë:

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

Qëllimi i këtij mësimi është të shkruhet klasa Router, që kthen një objekt të klasës Track. Pjesa tjetër nuk na prek akoma. Le të fillojmë shkrimin e kësaj klase.

Detyra praktike

Задание 1

Kopjoni kodin e klasës time Track dhe vendoseni atë në skedarin /core/Track.php.