Öz MVC çäreňizdä dispetçeri işläp taýýarlaň

Indiki index.php faýlynyň mazmunyny ýatlap göreli:

index.php<?php
  namespace Core;
  
  error_reporting(E_ALL);
  ini_set('display_errors', 'on');
  
  spl_autoload_register(function($class) {
    // siziň awtomatik ýüklemek amalyňyz
  });
  
  $routes = require $_SERVER['DOCUMENT_ROOT'] . '/project/config/routes.php';
  
  $track = ( new Router ) -> getTrack($routes, $_SERVER['REQUEST_URI']);
?>

Görşüňiz ýaly, häzirki wagtda router-ymyz Track klassynyň obýektini yzyna gaýtarýar, ýöneşdirijiniň adyny, hereketiň adyny we salgys setirinden parametrleri öz içine alýar. Şeýle-de, öňki sapakda biz ähli ýöneşdirijileriň atasyny ýasadyk.

Indi biz $track üýtgeýjimizde ýerleşen ýöneşdirijiniň usulynyň çagyrylýandygy ýaly etmeli.

Bunu ýörite Dispatcher klassy ýerine ýetirer. Dispetçer Track klassynyň obýektini alyp, onuň maglumatlaryna görä görkezilen klassyň obýektini döreder, bu klassyň usulyny çagyrar, bu usula parametrleri geçirýär.

Geliň, index.php faýlyna dispetçeriň çagyrylyşyny goşalyň:

index.php<?php
  namespace Core;
  
  error_reporting(E_ALL);
  ini_set('display_errors', 'on');
  
  spl_autoload_register(function($class) {
    // siziň awtomatik ýüklemek amalyňyz
  });
  
  $routes = require $_SERVER['DOCUMENT_ROOT'] . '/project/config/routes.php';
  
  $track = ( new Router ) -> getTrack($routes, $_SERVER['REQUEST_URI']);
  
  // Dispetçeri çakyrýarys:
  $page  = ( new Dispatcher ) -> getPage($track);
?>

Dispetçerimiziň getPage usulynyň çagyrylmagy ýöneşdirijiniň render usulyny çagyrar we şol usulyň çagyrylyşyndan yzyna gaýdan zady gaýtarar. Öňki sapakdan bilişiňiz ýaly, ýöneşdirijiniň render usuly Page klassynyň obýektini yzyna gaýtarýar.

Dispatcher klassymyzyň taýýar şablonynyň görnüşi:

/core/Dispatcher.php<?php
  namespace Core;
  
  class Dispatcher
  {
    public function getPage(Track $track)
    {
      ...kod
      return kontroler -> render(parametrler);
    }
  }
?>
Задание 1

Men taýýarlan şablony ulanyp, beýan edilen Dispatcher klassyny amala aşyryň. Onuň işini barlaň. Kynçylyk ýüze çykanda meniň taýýarlan okuw çäremin faýlaryndaky başlangyç koda serediň.