Phát triển bộ định tuyến trong framework MVC tự viết
Bây giờ bạn cần phát triển một router. Nó là một lớp, sẽ lấy mảng các route, lấy URL được yêu cầu, và xác định route nào tương ứng với URL đó. Sau khi tìm thấy route phù hợp, lớp của chúng ta phải lấy các phần của URL tương ứng với các tham số của route.
Hãy để kết quả của router chúng ta trả về
một đối tượng của lớp Track, chứa tên
controller cần được gọi cho
yêu cầu này, tên action và các tham số từ URL.
Hãy để lớp Track của chúng ta có các thuộc tính
controller, action và params,
chỉ có thể đọc:
<?php
namespace Core;
class Track
{
private $controller;
private $action;
private $params;
public function __construct($controller, $action, $params)
{
$this->controller = $controller;
$this->action = $action;
$this->params = $params;
}
public function __get($property)
{
return $this->$property;
}
}
?>
Ví dụ
Ví dụ, giả sử trong thanh địa chỉ gõ
/test/1/2/. Giả sử chúng ta có một route,
tương ứng với địa chỉ này:
<?php
new Route('/test/:var1/:var2/', 'test', 'index');
?>
Điều này có nghĩa là tên controller sẽ là test,
tên action - index, và mảng tham số
sẽ như sau:
<?php
['var1' => 1, 'var2' => 2]
?>
Mục tiêu của bài học này - viết lớp Router,
trả về đối tượng của lớp Track.
Những thứ khác hiện chưa liên quan đến chúng ta. Hãy bắt đầu
viết lớp này.
Nhiệm vụ thực hành
Sao chép mã lớp Track của tôi
và đặt nó vào tệp
/core/Track.php.