Өзүңүздүн MVC фреймворкуңуздагы диспетчерди иштеп чыгуу

index.php файлынын учурдагы мазмунун эске алалы:

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';
  
  $track = ( new Router ) -> getTrack($routes, $_SERVER['REQUEST_URI']);
?>

Көрүп тургандарыңыздай, азырынча биздин роутер Track класстын объектин кайтарат, ал дарек сабынан контроллердин атын, иш-аракеттин атын жана параметрлерди камтыйт. Мындан тышкары, өткөн сабакта биз бардык контроллерлердин ата-энесин жасадык.

Эми биз $track өзгөрмөбүздө камтылган маалыматтар боюнча контроллер методу чакырылышына жетише алабыз.

Муну атайын Dispatcher классты ишке ашырат. Диспетчер Track класстын объектин алат жана анын маалыматтары боюнча көрсөтүлгөн класстын объектин түзөт, ошол класстын методун чакырат, параметрлерди ошол методго өткөрүп берет.

Келгиле, диспетчер чакыруусун index.php файлына кошолу:

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';
  
  $track = ( new Router ) -> getTrack($routes, $_SERVER['REQUEST_URI']);
  
  // Диспетчер чакыруу:
  $page  = ( new Dispatcher ) -> getPage($track);
?>

Биздин диспетчердин getPage методу render контроллер методун чакырат жана ошол методдун чакыруусу кайтарган нерсени кайтарат. Өткөн сабактан биле тургандарыңыздай, контроллердин render методу Page класстын объектин кайтарат.

Мына биздин Dispatcher класстын даярдоосу:

/core/Dispatcher.php<?php
  namespace Core;
  
  class Dispatcher
  {
    public function getPage(Track $track)
    {
      ...код
      return контроллер -> render(параметтер);
    }
  }
?>
Задание 1

Менин даярдоомду колдонуп, сүрөттөлгөн Dispatcher классты ишке ашырыңыз. Анын ишин текшериңиз. Кыйынчылык чыкса, менин жасаган окуу фреймворкумдун файлдарындагы баштапкы кодду караңыз.