Diszpécser fejlesztése saját MVC keretrendszerben

Emlékezzünk vissza a index.php fájl jelenlegi tartalmára:

index.php<?php
  namespace Core;
  
  error_reporting(E_ALL);
  ini_set('display_errors', 'on');
  
  spl_autoload_register(function($class) {
    // az Ön automatikus betöltési implementációja
  });
  
  $routes = require $_SERVER['DOCUMENT_ROOT'] . '/project/config/routes.php';
  
  $track = ( new Router ) -> getTrack($routes, $_SERVER['REQUEST_URI']);
?>

Amint láthatja, jelenleg a routerünk egy Track osztályú objektumot ad vissza, amely tartalmazza a vezérlő nevét, a művelet nevét és a paramétereket a cím sorból. Ezenkívül az előző leckében elkészítettük az összes vezérlő szülőjét.

Most már megtehetjük, hogy meghívásra kerüljön a vezérlő metódusa, amelynek adatai a $track változónkban találhatók.

Ezt egy speciális Dispatcher osztály fogja elvégezni. A diszpécser megkapja a Track osztály objektumát és annak adatai alapján létrehozza a megadott osztály objektumát, meghívja az osztály metódusát, átadva a metódusnak a paramétereket.

Adjunk hozzá diszpécser hívást a index.php fájlhoz:

index.php<?php
  namespace Core;
  
  error_reporting(E_ALL);
  ini_set('display_errors', 'on');
  
  spl_autoload_register(function($class) {
    // az Ön automatikus betöltési implementációja
  });
  
  $routes = require $_SERVER['DOCUMENT_ROOT'] . '/project/config/routes.php';
  
  $track = ( new Router ) -> getTrack($routes, $_SERVER['REQUEST_URI']);
  
  // Diszpécser hívása:
  $page  = ( new Dispatcher ) -> getPage($track);
?>

A diszpécser getPage metódusának hívása meghívja a vezérlő render metódusát és visszaadja, amit a metódus hívása visszaadott. Amint az előző leckéből már tudja, a render metódus egy Page osztályú objektumot ad vissza.

Itt a Dispatcher osztályunk vázlata:

/core/Dispatcher.php<?php
  namespace Core;
  
  class Dispatcher
  {
    public function getPage(Track $track)
    {
      ...kód
      return vezérlő -> render(paraméterek);
    }
  }
?>
Задание 1

Az általam készített vázlat felhasználásával valósítsa meg a leírt Dispatcher osztályt. Ellenőrizze a működését. Nehézség esetén nézze meg a forráskódot az általam készített oktatási keretrendszer fájljaiban.