Savo MVC karkaso Dispečerio kūrimas
Prisiminkime dabartinį failo index.php turinį:
<?php
namespace Core;
error_reporting(E_ALL);
ini_set('display_errors', 'on');
spl_autoload_register(function($class) {
// jūsų autoloadinimo realizacija
});
$routes = require $_SERVER['DOCUMENT_ROOT'] . '/project/config/routes.php';
$track = ( new Router ) -> getTrack($routes, $_SERVER['REQUEST_URI']);
?>
Kaip matote, kol kas mūsų maršrutizatorius grąžina
Track klasės objektą, kuriame yra
kontrolerio pavadinimas, veiksmo pavadinimas ir parametrai iš
adreso eilutės. Be to, ankstesnėje
pamokoje mes sukūrėme visų
kontrolerių tėvą.
Dabar mes galime padaryti taip, kad būtų
iškviestas kontrolerio metodas, kurio duomenys
yra saugomi mūsų kintamajame $track.
Už tai bus atsakinga speciali Dispatcher klasė.
Dispečeris gaus Track klasės objektą
ir pagal jo duomenis sukurs nurodyto
klasės objektą, iškvieš tos klasės metodą, perduodamas
į šį metodą parametrus.
Pridėkime dispečerio iškvietimą į failą index.php:
<?php
namespace Core;
error_reporting(E_ALL);
ini_set('display_errors', 'on');
spl_autoload_register(function($class) {
// jūsų autoloadinimo realizacija
});
$routes = require $_SERVER['DOCUMENT_ROOT'] . '/project/config/routes.php';
$track = ( new Router ) -> getTrack($routes, $_SERVER['REQUEST_URI']);
// Dispečerio iškvietimas:
$page = ( new Dispatcher ) -> getPage($track);
?>
Mūsų dispečerio metodo getPage iškvietimas
iškvies kontrolerio metodą render
ir grąžins tai, ką grąžino šio metodo iškvietimas.
Kaip jau žinote iš ankstesnės pamokos, kontrolerio
metodas render grąžina
Page klasės objektą.
Štai mūsų Dispatcher klasės ruošinys:
<?php
namespace Core;
class Dispatcher
{
public function getPage(Track $track)
{
...kodas
return kontroleris -> render(parametrai);
}
}
?>
Naudodamiesi mano ruošiniu, realizuokite aprašytą
Dispatcher klasę. Patikrinkite jos veikimą.
Jei kyla sunkumų, pažiūrėkite pradinį kodą
mano sukurtų mokymo karkaso failuose.