Υλοποίηση δρομολογητή στο δικό σας MVC framework

Ας γράψουμε τώρα το πρότυπο της κλάσης 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. Εάν αντιμετωπίσετε δυσκολίες (κάτι που είναι πολύ πιθανό), κοιτάξτε στον πηγαίο κώδικα του framework με το οποίο μελετήσατε τη χρήση του MVC. Εκεί, στην κλάση Router θα βρείτε το missing μέρος της υλοποίησης και τα σχόλιά μου για αυτήν.