Zhvillimi i Dispeçerit në Kornizën tuaj MVC

Le të kujtojmë përmbajtjen aktuale të skedarit index.php:

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

Siç e shihni, për momentin router-i ynë kthen objekt të klasës Track, që përmban emrin e kontrollerit, emrin e veprimit dhe parametrat nga rreshti i adresës. Përveç kësaj, në mësimin e mëparshëm ne krijuam prindin e të gjithë kontrollerëve.

Tani mund të bëjmë që të ndodhë thirrja e metodës së kontrollerit, të dhënat e së cilës përmbahen në variablin ton $track.

Këtë do ta bëjë një klasë e veçantë Dispatcher. Dispeçeri do të marrë objekt të klasës Track dhe sipas të dhënave të tij do të krijojë objekt të klasës së specifikuar, do të thërrasë metodën e asaj klase, duke kaluar në atë metodë parametrat.

Le të shtojmë thirrjen e dispeçerit në skedarin index.php:

index.php<?php
  namespace Core;
  
  error_reporting(E_ALL);
  ini_set('display_errors', 'on');
  
  spl_autoload_register(function($class) {
    // implementimi juaj i autoloading
  });
  
  $routes = require $_SERVER['DOCUMENT_ROOT'] . '/project/config/routes.php';
  
  $track = ( new Router ) -> getTrack($routes, $_SERVER['REQUEST_URI']);
  
  // Thirrja e dispeçerit:
  $page  = ( new Dispatcher ) -> getPage($track);
?>

Thirrja e metodës getPage të dispeçerit tonë do të thërrasë metodën render të kontrollerit dhe do të kthejë atë që kthehet nga thirrja e asaj metode. Siç e dini tashmë nga mësimi i mëparshëm, metoda render e kontrollerit kthen objekt të klasës Page.

Këtu është gëzofi i klasës sonë Dispatcher:

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

Duke përdorur gëzofin tim, implementoni klasën e përshkruar Dispatcher. Kontrolloni funksionimin e saj. Nëse keni vështirësi, shikoni kodin burimor në skedarët e kornizës time mësimore të bërë.