Razvoj dispečera u sopstvenom MVC frejmvorku
Prisetimo se trenutnog sadržaja fajla index.php:
<?php
namespace Core;
error_reporting(E_ALL);
ini_set('display_errors', 'on');
spl_autoload_register(function($class) {
// vaša implementacija autoload-a
});
$routes = require $_SERVER['DOCUMENT_ROOT'] . '/project/config/routes.php';
$track = ( new Router ) -> getTrack($routes, $_SERVER['REQUEST_URI']);
?>
Kao što vidite, za sada naš router vraća
objekat klase Track, koji sadrži ime
kontrolera, ime akcije i parametre iz
adresne trake. Osim toga, u prethodnoj
lekciji smo napravili roditelja za sve
kontrolere.
Sada možemo da postignemo da se izvrši
poziv metode kontrolera, čiji se podaci
nalaze u našoj promenljivoj $track.
Time će se baviti specijalna klasa Dispatcher.
Dispečer će dobijati objekat klase Track
i na osnovu njegovih podataka kreirati objekat navedene
klase, pozivati metodu te klase, prosleđujući
toj metodi parametre.
Hajde da dodamo poziv dispečera u fajl index.php:
<?php
namespace Core;
error_reporting(E_ALL);
ini_set('display_errors', 'on');
spl_autoload_register(function($class) {
// vaša implementacija autoload-a
});
$routes = require $_SERVER['DOCUMENT_ROOT'] . '/project/config/routes.php';
$track = ( new Router ) -> getTrack($routes, $_SERVER['REQUEST_URI']);
// Poziv dispečera:
$page = ( new Dispatcher ) -> getPage($track);
?>
Poziv metode getPage našeg dispečera
će pozvati metodu render kontrolera
i vratiti ono što je vratio taj poziv.
Kao što već znate iz prethodne lekcije, metoda
render kontrolera vraća objekat
klase Page.
Evo šablona naše klase Dispatcher:
<?php
namespace Core;
class Dispatcher
{
public function getPage(Track $track)
{
...kod
return kontroler -> render(Parametri);
}
}
?>
Koristeći moj šablon implementirajte opisanu
klasu Dispatcher. Proverite njen rad.
U slučaju poteškoća pogledajte izvorni kod
u fajlovima učinjeg frejmvorka koji sam napravio.