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:
<?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:
<?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:
<?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
}
}
?>
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.
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ó.