Zhvillimi i Dispeçerit në Kornizën tuaj MVC
Le të kujtojmë përmbajtjen aktuale të skedarit 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:
<?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:
<?php
namespace Core;
class Dispatcher
{
public function getPage(Track $track)
{
...kod
return kontroller -> render(parametrat);
}
}
?>
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ë.