Razvoj dispečerja v lastnem MVC ogrodju

Spomnimo se trenutne vsebine datoteke index.php:

index.php<?php
  namespace Core;
  
  error_reporting(E_ALL);
  ini_set('display_errors', 'on');
  
  spl_autoload_register(function($class) {
    // vaša implementacija avtomatskega nalaganja
  });
  
  $routes = require $_SERVER['DOCUMENT_ROOT'] . '/project/config/routes.php';
  
  $track = ( new Router ) -> getTrack($routes, $_SERVER['REQUEST_URI']);
?>

Kot vidite, za zdaj naš usmerjevalnik vrne objekt razreda Track, ki vsebuje ime krmilnika, ime dejanja in parametre iz naslovne vrstice. Poleg tega smo v prejšnji lekciji naredili starša vseh krmilnikov.

Zdaj lahko naredimo tako, da se zgodi klic metode krmilnika, katere podatki so vsebovani v naši spremenljivki $track.

S tem se bo ukvarjal poseben razred Dispatcher. Dispečer bo prejel objekt razreda Track in po njegovih podatkih ustvaril objekt navedenega razreda, poklical metodo tega razreda in prenesel v to metodo parametre.

Dodajmo klic dispečerja v datoteko index.php:

index.php<?php
  namespace Core;
  
  error_reporting(E_ALL);
  ini_set('display_errors', 'on');
  
  spl_autoload_register(function($class) {
    // vaša implementacija avtomatskega nalaganja
  });
  
  $routes = require $_SERVER['DOCUMENT_ROOT'] . '/project/config/routes.php';
  
  $track = ( new Router ) -> getTrack($routes, $_SERVER['REQUEST_URI']);
  
  // Klic dispečerja:
  $page  = ( new Dispatcher ) -> getPage($track);
?>

Klic metode getPage našega dispečerja bo poklical metodo render krmilnika in vrnil tisto, kar je vrnil klic te metode. Kot že veste iz prejšnje lekcije, metoda render krmilnika vrne objekt razreda Page.

Tukaj je priprava našega razreda Dispatcher:

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

Z uporabo moje priprave implementirajte opisani razred Dispatcher. Preverite njegovo delovanje. Pri težavah si oglejte izvorno kodo v datotekah mojega učnega ogrodja.