Làm việc với route trong framework MVC tự xây dựng
Bạn đã biết rằng trong file /project/config/routes.php
chứa các route, chỉ ra sự tương ứng
giữa URL và controller cùng action. Các route
được biểu diễn dưới dạng các đối tượng của lớp Route.
Hãy tạo lớp này trong file
/core/Route.php:
<?php
namespace Core;
class Route
{
private $path;
private $controller;
private $action;
public function __construct($path, $controller, $action)
{
$this->path = $path;
$this->controller = $controller;
$this->action = $action;
}
public function __get($property)
{
return $this->$property;
}
}
?>
Như bạn thấy, trong lớp này các thuộc tính được thiết kế chỉ để đọc, điều này đạt được bằng cách sử dụng phương thức magic.
Bây giờ hãy xem file chứa route. Bạn có thể
thấy rằng ở đó có một mảng, mảng này
được trả về thông qua return.
Điều này có nghĩa là
nếu include file đó thông qua require,
thì kết quả của việc include có thể được gán vào
một biến và trong biến đó sẽ chứa mảng của chúng ta:
<?php
namespace Core;
error_reporting(E_ALL);
ini_set('display_errors', 'on');
spl_autoload_register(function($class) {
// your autoload implementation
});
// Đọc mảng từ file chứa route vào biến:
$routes = require $_SERVER['DOCUMENT_ROOT'] . '/project/config/routes.php';
?>
Hãy sao chép code lớp Route của tôi
và đặt nó vào file
/core/Route.php.
Hãy lấy mảng chứa route trong file index.php.