Развој диспетчера у свом MVC оквиру
Подсетимо се тренутног садржаја фајла index.php:
<?php
namespace Core;
error_reporting(E_ALL);
ini_set('display_errors', 'on');
spl_autoload_register(function($class) {
// ваша реализация автозагрузки
});
$routes = require $_SERVER['DOCUMENT_ROOT'] . '/project/config/routes.php';
$track = ( new Router ) -> getTrack($routes, $_SERVER['REQUEST_URI']);
?>
Као што видите, засад наш рутер враћа
објекат класе Track, који садржи име
контролера, име акције и параметре из
адресне траке. Поред тога, у претходној
лекцији смо направили родитеља свих
контролера.
Сада можемо да урадимо да се деси
позивање методе контролера, чији подаци
се налазе у нашој променљивој $track.
Тим ће се бавити специјална класа Dispatcher.
Диспетчер ће добијати објекат класе Track
и по његовим подацима креирати објекат назначене
класе, позивати метод те класе, прослеђујући
том методу параметре.
Хајде да додамо позивање диспетчера у фајл index.php:
<?php
namespace Core;
error_reporting(E_ALL);
ini_set('display_errors', 'on');
spl_autoload_register(function($class) {
// ваша реализация аутоматског учитавања
});
$routes = require $_SERVER['DOCUMENT_ROOT'] . '/project/config/routes.php';
$track = ( new Router ) -> getTrack($routes, $_SERVER['REQUEST_URI']);
// Позивање диспетчера:
$page = ( new Dispatcher ) -> getPage($track);
?>
Позивање метода getPage нашег диспетчера
ће позвати метод render контролера
и вратити оно што је тај позив вратио.
Као што већ знате из претходне лекције, метод
render контролера враћа објекат
класе Page.
Ево скелета наше класе Dispatcher:
<?php
namespace Core;
class Dispatcher
{
public function getPage(Track $track)
{
...код
return контролер -> render(параметри);
}
}
?>
Користећи мој скелет, имплементирајте описану
класу Dispatcher. Проверите њен рад.
У случају потешкоћа, погледајте изворни код
у фајловима мога направљеног образовног оквира.