Работа с маршрути в собствен MVC фреймуърк

Вече знаете, че във файла /project/config/routes.php се поставят маршрути, които посочват съответствия между URL и контролери с действия. Маршрутите представляват обекти от клас Route. Нека направим този клас във файла /core/Route.php:

/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, резултатът от включването може да се запише в променлива и в тази променлива ще се окаже нашият масив:

index.php<?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';
?>
Задание 1

Копирайте кода на моя клас Route и го поставете във файла /core/Route.php.

Задание 2

Вземете масива с маршрути във файла index.php.