Vývoj dispatcheru ve vlastním MVC frameworku
Připomeňme si aktuální obsah souboru index.php:
<?php
namespace Core;
error_reporting(E_ALL);
ini_set('display_errors', 'on');
spl_autoload_register(function($class) {
// vaše implementace automatického načítání
});
$routes = require $_SERVER['DOCUMENT_ROOT'] . '/project/config/routes.php';
$track = ( new Router ) -> getTrack($routes, $_SERVER['REQUEST_URI']);
?>
Jak vidíte, zatím nám náš router vrací
objekt třídy Track, obsahující název
kontroleru, název akce a parametry z
adresního řádku. Kromě toho, v předchozí
lekci jsme vytvořili rodiče všech
kontrolerů.
Nyní můžeme zařídit, aby došlo k
volání metody kontroleru, jehož data
jsou obsažena v naší proměnné $track.
Tím se bude zabývat speciální třída Dispatcher.
Dispatcher bude získávat objekt třídy Track
a podle jeho dat vytvářet objekt uvedené
třídy, volat metodu této třídy a předávat
do této metody parametry.
Přidejme volání dispatcheru do souboru index.php:
<?php
namespace Core;
error_reporting(E_ALL);
ini_set('display_errors', 'on');
spl_autoload_register(function($class) {
// vaše implementace automatického načítání
});
$routes = require $_SERVER['DOCUMENT_ROOT'] . '/project/config/routes.php';
$track = ( new Router ) -> getTrack($routes, $_SERVER['REQUEST_URI']);
// Volání dispatcheru:
$page = ( new Dispatcher ) -> getPage($track);
?>
Volání metody getPage našeho dispatcheru
bude volat metodu render kontroleru
a vracet to, co vrátilo volání této metody.
Jak již víte z předchozí lekce, metoda
render kontroleru vrací objekt
třídy Page.
Zde je příprava naší třídy Dispatcher:
<?php
namespace Core;
class Dispatcher
{
public function getPage(Track $track)
{
...kód
return kontroler -> render(parametry);
}
}
?>
Pomocí mé přípravy implementujte popsanou
třídu Dispatcher. Ověřte její fungování.
Při obtížích se podívejte na zdrojový kód
v souborech mnou vytvořeného výukového frameworku.