Ўз MVC фреймворкингизда маршрутлар билан ишлаш

Сиз биласизки, /project/config/routes.php файлида URL ва контроллерлар ҳамда амаллар ўртасидаги мосликни кўрсатадиган маршрутлар joylashgan. Маршрутлар 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;
    }
  }
?>

Кўриб turganingizdek, бу синфдаги хусусиятлар фақат ўқиш учун мўлжалланган, бу эса магиядан foydalanish орқали амалга oshiriladi.

Энди маршрутлар файлини tekshiring. Сиз кўришингиз мумкинки, у ерда return орқали qaytariladган массив joylashgan. Бу демакдики, агар бундай файлни require орқали ulansak, у holda улаш натижасини ўзгарувчига yozishimiz мумкин ва шу ўзгарувчида бизнинг массивимиз joylashadi:

index.php<?php
  namespace Core;
  
  error_reporting(E_ALL);
  ini_set('display_errors', 'on');
  
  spl_autoload_register(function($class) {
    // сизнинг автозагрузка амалга oshirүшингиз
  });
  
  // Маршрутлар файлидан массивни ўзгарувчига ўқиамиз:
  $routes = require $_SERVER['DOCUMENT_ROOT'] . '/project/config/routes.php';
?>
Задание 1

Менинг Route синфим кодин нусхалаб олиб, уни /core/Route.php файлида joylang.

Задание 2

index.php файлида маршрутлар билан массивни oling.