Utekelezaji wa Router katika Mfumo wa MVC wa Kuendeleza

Wacha sasa tuandae muundo wa classi Router kulingana na miito yetu:

/core/Router.php<?php
  namespace Core;
  
  class Router
  {
    private $routes;
    
    public function getTrack($routes, $uri)
    {
      // kutakuwa na code hapa
    }
  }
?>

Katika mbinu getTrack tunapaswa kubainisha, ni route ipi inafanana na $uri hii. Ili kufanya hivyo, inahitajika kuzungusha safu yetu ya routes kwa kitanzi:

/core/Router.php<?php
  namespace Core;
  
  class Router
  {
    public function getTrack($routes, $uri)
    {
      foreach ($routes as $route) {
        // ukaguzi wa $uri na $route
      }
    }
  }
?>

Ikiwa route fulani inafanana na URI, sisi tunapaswa kupata thamani za vigezo vya route kutoka kwa URI hii na kurudisha kitu cha classi Track:

/core/Router.php<?php
  namespace Core;
  
  class Router
  {
    public function getTrack($routes, $uri)
    {
      foreach ($routes as $route) {
        if (ukaguzi wa kufanana kwa route na URI) {
          $params = ; // inahitajika kupata vigezo kutoka kwa uri
          return new Track($route->controller, $route->action, $params);
        }
      }
      
      return new Track('error', 'notFound'); // ikiwa hakuna route yoyote inayofaa
    }
  }
?>
Задание 1

Nakili muundo wangu wa classi Router na uiweke kwenye faili /core/Router.php.

Задание 2

Tekeleza classi Router iliyoelezewa, ikirudisha kitu cha classi Track kama matokeo yake. Ikiwa utakosa (kuna uwezekano mkubwa), angalia kwenye code asili ya mfumo ambao ulitumia kujifunza matumizi ya MVC. Huko katika classi Router utapata sehemu inayokosekana ya utekelezaji na maoni yangu kuhusu hilo.