Triển khai bộ định tuyến trong MVC framework của riêng bạn

Bây giờ hãy viết bản phác thảo lớp Router theo các lệnh gọi của chúng ta:

/core/Router.php<?php
  namespace Core;
  
  class Router
  {
    private $routes;
    
    public function getTrack($routes, $uri)
    {
      // mã sẽ ở đây
    }
  }
?>

Trong phương thức getTrack, chúng ta cần xác định tuyến đường nào tương ứng với $uri đã cho. Để làm điều này, cần lặp qua mảng tuyến đường của chúng ta bằng vòng lặp:

/core/Router.php<?php
  namespace Core;
  
  class Router
  {
    public function getTrack($routes, $uri)
    {
      foreach ($routes as $route) {
        // kiểm tra $uri và $route
      }
    }
  }
?>

Nếu một tuyến đường nào đó khớp với URI, chúng ta cần lấy các giá trị tham số từ URI đó và trả về một đối tượng của lớp Track:

/core/Router.php<?php
  namespace Core;
  
  class Router
  {
    public function getTrack($routes, $uri)
    {
      foreach ($routes as $route) {
        if (kiểm tra sự khớp giữa tuyến đường và URI) {
          $params = ; // cần lấy tham số từ uri
          return new Track($route->controller, $route->action, $params);
        }
      }
      
      return new Track('error', 'notFound'); // nếu không có tuyến đường nào khớp
    }
  }
?>
Задание 1

Hãy sao chép bản phác thảo lớp Router của tôi và đặt nó vào tệp /core/Router.php.

Задание 2

Hãy triển khai lớp Router đã mô tả, kết quả của bạn phải trả về một đối tượng của lớp Track. Nếu bạn gặp khó khăn (điều này rất có thể xảy ra), hãy xem mã nguồn của framework mà bạn đã học để sử dụng MVC. Ở đó, trong lớp Router, bạn sẽ tìm thấy phần triển khai còn thiếu và các chú thích của tôi về nó.