Dispatcherin kehittäminen omaan MVC-kehykseesi
Muistetaan tiedoston index.php nykyinen sisältö:
<?php
namespace Core;
error_reporting(E_ALL);
ini_set('display_errors', 'on');
spl_autoload_register(function($class) {
// sinun autoload-toteutuksesi
});
$routes = require $_SERVER['DOCUMENT_ROOT'] . '/project/config/routes.php';
$track = ( new Router ) -> getTrack($routes, $_SERVER['REQUEST_URI']);
?>
Kuten näet, reititin palauttaa meille
luokan Track olion, joka sisältää
kontrollerin nimen, toiminnon nimen ja parametrit
osoiterivistä. Lisäksi edellisessä
oppitunnissa teimme kaikkien
kontrollereiden yläluokan.
Nyt voimme toteuttaa niin, että
kutsutaan kontrollerin metodia, jonka tiedot
sisältyvät muuttujaamme $track.
Tästä vastaa erityinen luokka Dispatcher.
Dispatcher saa luokan Track olion
ja sen tietojen perusteella luo määritetyn
luokan olion, kutsuu luokan metodia, välittäen
metodille parametrit.
Lisätään dispatcherin kutsu tiedostoon index.php:
<?php
namespace Core;
error_reporting(E_ALL);
ini_set('display_errors', 'on');
spl_autoload_register(function($class) {
// sinun autoload-toteutuksesi
});
$routes = require $_SERVER['DOCUMENT_ROOT'] . '/project/config/routes.php';
$track = ( new Router ) -> getTrack($routes, $_SERVER['REQUEST_URI']);
// Dispatcherin kutsu:
$page = ( new Dispatcher ) -> getPage($track);
?>
Dispatcherimme metodin getPage kutsu
käynnistää kontrollerin metodin render
ja palauttaa sen, mitä kyseisen metodin kutsu palautti.
Kuten jo tiedät edellisestä oppitunnista, kontrollerin
metodi render palauttaa luokan
Page olion.
Tässä on luokkamme Dispatcher runko:
<?php
namespace Core;
class Dispatcher
{
public function getPage(Track $track)
{
...koodi
return kontrolleri -> render(parametrit);
}
}
?>
Käyttäen luomaani runkoa toteuta kuvattu
luokka Dispatcher. Tarkista sen toiminta.
Vaikeuksien sattuessa katso lähdekoodia
tekemästäni opetuskehyksestä.