Ontwikkeling van 'n Verspreider in Jou Eie MVC Raamwerk
Onthou die huidige inhoud van die lêer index.php:
<?php
namespace Core;
error_reporting(E_ALL);
ini_set('display_errors', 'on');
spl_autoload_register(function($class) {
// jou implementasie van outolading
});
$routes = require $_SERVER['DOCUMENT_ROOT'] . '/project/config/routes.php';
$track = ( new Router ) -> getTrack($routes, $_SERVER['REQUEST_URI']);
?>
Soos jy kan sien, gee ons router vir ons tans 'n
objek van die klas Track terug, wat die naam van die
beheerder, die naam van die aksie en die parameters uit die
adresbalk bevat. Daarbenewens het ons in die vorige
les die ouer van alle beheerders gemaak.
Nou kan ons dit so maak dat die metode van die beheerder, waarvan die data
in ons veranderlike $track vervat is, opgeroep word.
Dit sal deur 'n spesiale klas Dispatcher gedoen word.
Die verspreider sal 'n objek van die klas Track ontvang
en volgens sy data 'n objek van die gespesifiseerde
klas skep, die metode van daardie klas oproep, en
die parameters aan hierdie metode oordra.
Laat ons die oproep na die verspreider by die lêer index.php voeg:
<?php
namespace Core;
error_reporting(E_ALL);
ini_set('display_errors', 'on');
spl_autoload_register(function($class) {
// jou implementasie van outolading
});
$routes = require $_SERVER['DOCUMENT_ROOT'] . '/project/config/routes.php';
$track = ( new Router ) -> getTrack($routes, $_SERVER['REQUEST_URI']);
// Oproep na die verspreider:
$page = ( new Dispatcher ) -> getPage($track);
?>
Die oproep na die metode getPage van ons verspreider
sal die metode render van die beheerder oproep
en teruggee wat daardie metode-oproep teruggee.
Soos jy reeds uit die vorige les weet, gee die metode
render van die beheerder 'n objek van die
klas Page terug.
Hier is die raamwerk van ons klas Dispatcher:
<?php
namespace Core;
class Dispatcher
{
public function getPage(Track $track)
{
...kode
return beheerder -> render(parameters);
}
}
?>
Gebruik my raamwerk, implementeer die beskryfde
klas Dispatcher. Toets sy werking.
As jy sukkel, kyk na die bronkode
in die lêers van die deur-my-gemaakte leerlingraamwerk.