Vývoj dispatchera vo vlastnom MVC frameworku
Pripomeňme si aktuálny obsah súboru index.php:
<?php
namespace Core;
error_reporting(E_ALL);
ini_set('display_errors', 'on');
spl_autoload_register(function($class) {
// vaša implementácia autoloadingu
});
$routes = require $_SERVER['DOCUMENT_ROOT'] . '/project/config/routes.php';
$track = ( new Router ) -> getTrack($routes, $_SERVER['REQUEST_URI']);
?>
Ako vidíte, náš router zatiaľ vracia
objekt triedy Track, ktorý obsahuje názov
kontrolera, názov akcie a parametre z
adresného riadku. Okrem toho sme v predchádzajúcej
lekcii vytvorili rodiča všetkých
kontrolerov.
Teraz môžeme zaistiť, aby sa uskutočnilo
volanie metódy kontrolera, ktorého údaje
sú obsiahnuté v našej premennej $track.
Tým sa bude zaoberať špeciálna trieda Dispatcher.
Dispatcher dostane objekt triedy Track
a podľa jeho údajov vytvorí objekt zadanej
triedy, zavolá metódu tejto triedy a prekladí
do tejto metódy parametre.
Pridajme volanie dispatchera do súboru index.php:
<?php
namespace Core;
error_reporting(E_ALL);
ini_set('display_errors', 'on');
spl_autoload_register(function($class) {
// vaša implementácia autoloadingu
});
$routes = require $_SERVER['DOCUMENT_ROOT'] . '/project/config/routes.php';
$track = ( new Router ) -> getTrack($routes, $_SERVER['REQUEST_URI']);
// Volanie dispatchera:
$page = ( new Dispatcher ) -> getPage($track);
?>
Volanie metódy getPage nášho dispatchera
zavolá metódu render kontrolera
a vráti to, čo vráti volanie tejto metódy.
Ako už viete z predchádzajúcej lekcie, metóda
render kontrolera vracia objekt
triedy Page.
Tu je kostra našej triedy Dispatcher:
<?php
namespace Core;
class Dispatcher
{
public function getPage(Track $track)
{
...kód
return kontroler -> render(parametre);
}
}
?>
Použitím mojej kostry implementujte opísanú
triedu Dispatcher. Otestujte jej činnosť.
Pri ťažkostiach sa pozrite na zdrojový kód
v súboroch mnou vytvoreného vzdelávacieho frameworku.