Développement du répartiteur dans son propre framework MVC
Rappelons le contenu actuel du fichier index.php :
<?php
namespace Core;
error_reporting(E_ALL);
ini_set('display_errors', 'on');
spl_autoload_register(function($class) {
// votre implémentation de l'autochargement
});
$routes = require $_SERVER['DOCUMENT_ROOT'] . '/project/config/routes.php';
$track = ( new Router ) -> getTrack($routes, $_SERVER['REQUEST_URI']);
?>
Comme vous pouvez le voir, pour l'instant, notre routeur retourne
un objet de la classe Track, contenant le nom
du contrôleur, le nom de l'action et les paramètres de
la ligne d'adresse. De plus, dans la leçon
précédente, nous avons créé le parent de tous
les contrôleurs.
Maintenant, nous pouvons faire en sorte que l'appel de la
méthode du contrôleur, dont les données sont
contenues dans notre variable $track, se produise.
C'est une classe spéciale Dispatcher qui s'en chargera.
Le répartiteur recevra un objet de la classe Track
et, à partir de ses données, créera un objet de la classe
spécifiée, appellera la méthode de cette classe, en transmettant
les paramètres à cette méthode.
Ajoutons l'appel du répartiteur dans le fichier index.php :
<?php
namespace Core;
error_reporting(E_ALL);
ini_set('display_errors', 'on');
spl_autoload_register(function($class) {
// votre implémentation de l'autochargement
});
$routes = require $_SERVER['DOCUMENT_ROOT'] . '/project/config/routes.php';
$track = ( new Router ) -> getTrack($routes, $_SERVER['REQUEST_URI']);
// Appel du répartiteur :
$page = ( new Dispatcher ) -> getPage($track);
?>
L'appel de la méthode getPage de notre répartiteur
appellera la méthode render du contrôleur
et retournera ce que cet appel a renvoyé.
Comme vous le savez déjà depuis la leçon
précédente, la méthode
render du contrôleur retourne un objet
de la classe Page.
Voici l'ébauche de notre classe Dispatcher :
<?php
namespace Core;
class Dispatcher
{
public function getPage(Track $track)
{
...code
return contrôleur -> render(paramètres);
}
}
?>
En utilisant mon ébauche, implémentez la classe
Dispatcher décrite. Vérifiez son fonctionnement.
En cas de difficultés, consultez le code source
dans les fichiers de mon framework pédagogique réalisé.