Dispečera izstrāde savā MVC framewrok
Atcerēsimies pašreizējo faila index.php saturu:
<?php
namespace Core;
error_reporting(E_ALL);
ini_set('display_errors', 'on');
spl_autoload_register(function($class) {
// jūsu autoload implementācija
});
$routes = require $_SERVER['DOCUMENT_ROOT'] . '/project/config/routes.php';
$track = ( new Router ) -> getTrack($routes, $_SERVER['REQUEST_URI']);
?>
Kā jūs redzat, pagaidām mūsu maršrutētājs atgriež
klases Track objektu, kas satur
kontrollera nosaukumu, darbības nosaukumu un parametrus no
adreses virknes. Turklāt iepriekšējā
nodarbībā mēs izveidojām visu kontrolleru
vecāku.
Tagad mēs varam panākt, lai notiktu
kontrollera metodes izsaukšana, kuras dati
tiek glabāti mūsu mainīgajā $track.
To veiks īpaša klase Dispatcher.
Dispečers saņems klases Track objektu
un pēc tā datiem izveidos norādītās
klases objektu, izsauks šīs klases metodi, padodot
šajā metodē parametrus.
Pievienosim dispečera izsaukšanu failā index.php:
<?php
namespace Core;
error_reporting(E_ALL);
ini_set('display_errors', 'on');
spl_autoload_register(function($class) {
// jūsu autoload implementācija
});
$routes = require $_SERVER['DOCUMENT_ROOT'] . '/project/config/routes.php';
$track = ( new Router ) -> getTrack($routes, $_SERVER['REQUEST_URI']);
// Dispečera izsaukšana:
$page = ( new Dispatcher ) -> getPage($track);
?>
Mūsu dispečera metodes getPage izsaukšana
izsauks kontrollera metodi render
un atgriezīs to, ko atgriezīs šīs metodes izsaukums.
Kā jūs jau zināt no iepriekšējās nodarbības, kontrollera
metode render atgriež klases
Page objektu.
Lūk, mūsu klases Dispatcher sagatave:
<?php
namespace Core;
class Dispatcher
{
public function getPage(Track $track)
{
...kods
return kontrolleris -> render(parametri);
}
}
?>
Izmantojot manu sagatavi, realizējiet aprakstīto
klasi Dispatcher. Pārbaudiet tās darbību.
Grūtību gadījumā apskatiet izejas kodu
manis izveidotā mācību framewrok failos.