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

Եկեք այժմ գրենք Router դասի կաղապարը մեր կանչերին համապատասխան:

/core/Router.php<?php
  namespace Core;
  
  class Router
  {
    private $routes;
    
    public function getTrack($routes, $uri)
    {
      // այստեղ կլինի կոդը
    }
  }
?>

getTrack մեթոդում մենք պետք է որոշենք, թե ռուտերից որն է համապատասխանում տրված $uri-ին: Դրա համար անհրաժեշտ է ցիկլով դասավորել մեր զանգվածը ռուտերով:

/core/Router.php<?php
  namespace Core;
  
  class Router
  {
    public function getTrack($routes, $uri)
    {
      foreach ($routes as $route) {
        // ստուգել $uri և $route
      }
    }
  }
?>

Եթե ինչ-որ ռուտեր համապատասխանում է URI-ին, մենք պետք է ստանանք այդ URI-ից ռուտերի պարամետրերի արժեքները և վերադարձնենք Track դասի օբյեկտը:

/core/Router.php<?php
  namespace Core;
  
  class Router
  {
    public function getTrack($routes, $uri)
    {
      foreach ($routes as $route) {
        if (ռուտերի և URI-ի համապատասխանության ստուգում) {
          $params = ; // պետք է ստանալ պարամետրերը uri-ից
          return new Track($route->controller, $route->action, $params);
        }
      }
      
      return new Track('error', 'notFound'); // եթե ոչ մի ռուտեր չի համապատասխանում
    }
  }
?>
Задание 1

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

Задание 2

Իրականացրեք նկարագրված Router դասը, որը որպես արդյունք վերադարձնում է Track դասի օբյեկտը: Եթե դժվարություններ առաջանան (ինչը շատ հավանական է), նայեք այն ֆրեյմվորկի սկզբնական կոդին, որով դուք ուսումնասիրել եք MVC-ի օգտագործումը: Այնտեղ Router դասում դուք կգտնեք իրականացման բացակայող մասը և իմ մեկնաբանությունները դրա վերաբերյալ: