Dispetcheri arendamine oma MVC raamistikus
Meenutame faili index.php praegust sisu:
<?php
namespace Core;
error_reporting(E_ALL);
ini_set('display_errors', 'on');
spl_autoload_register(function($class) {
// sinu automaatse laadimise implementatsioon
});
$routes = require $_SERVER['DOCUMENT_ROOT'] . '/project/config/routes.php';
$track = ( new Router ) -> getTrack($routes, $_SERVER['REQUEST_URI']);
?>
Nagu näete, seni kuni meie ruuter tagastab
klassi Track objekti, mis sisaldab
kontrolleri nime, tegevuse nime ja parameetreid
aadressiribalt. Lisaks tegime eelmises
õppetükis kõikide kontrollerite ülemklassi.
Nüüd saame teha nii, et toimub
kontrolleri meetodi väljakutse, mille andmed
sisalduvad meie muutujas $track.
Sellega hakkab tegelema spetsiaalne klass Dispatcher.
Dispetcher saab klassi Track objekti
ja selle andmete põhjal loob näidatud
klassi objekti, kutsub selle klassi meetodi välja, edastades
selles meetodis parameetrid.
Lisagem dispetcheri väljakutse faili index.php:
<?php
namespace Core;
error_reporting(E_ALL);
ini_set('display_errors', 'on');
spl_autoload_register(function($class) {
// sinu automaatse laadimise implementatsioon
});
$routes = require $_SERVER['DOCUMENT_ROOT'] . '/project/config/routes.php';
$track = ( new Router ) -> getTrack($routes, $_SERVER['REQUEST_URI']);
// Dispetcheri väljakutse:
$page = ( new Dispatcher ) -> getPage($track);
?>
Meie dispetcheri meetodi getPage väljakutse
kutsub välja kontrolleri meetodi render
ja tagastab selle meetodi väljakutse tulemuse.
Nagu te juba eelmisest õppetükist teate, meetod
render tagastab kontrolleris
klassi Page objekti.
Siin on meie klassi Dispatcher mustand:
<?php
namespace Core;
class Dispatcher
{
public function getPage(Track $track)
{
...kood
return kontroller -> render(parameetrid);
}
}
?>
Kasutades minu mustandit, implementeerige kirjeldatud
klass Dispatcher. Kontrollige selle tööd.
Raskuste korral vaadake lähtekoodi
minu tehtud õpperaamistiku failidest.