Работа с маршрути в собствен MVC фреймуърк
Вече знаете, че във файла /project/config/routes.php
се поставят маршрути, които посочват съответствия
между URL и контролери с действия. Маршрутите
представляват обекти от клас Route.
Нека направим този клас във файла
/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;
}
}
?>
Както виждате, в този клас свойствата са предназначени само за четене, което се постига чрез използването на магия.
Погледнете сега във файла с маршрути. Можете
да видите, че там се намира масив, който
се връща чрез return. Това означава,
че ако се включи такъв файл чрез require,
резултатът от включването може да се запише в
променлива и в тази променлива ще се окаже нашият
масив:
<?php
namespace Core;
error_reporting(E_ALL);
ini_set('display_errors', 'on');
spl_autoload_register(function($class) {
// вашата реализация на автозареждане
});
// Прочитаме масива от файла с маршрути в променлива:
$routes = require $_SERVER['DOCUMENT_ROOT'] . '/project/config/routes.php';
?>
Копирайте кода на моя клас Route
и го поставете във файла
/core/Route.php.
Вземете масива с маршрути във файла index.php.