All the methods which the plugin implemented according to this interface, will be called at the proper time automatically.(Yaf >=1.0.0)
Les plugins apportent la possibilité d'étendre et de personnaliser facilement le framework.
Les plugins sont des classes. La définition actuelle d'une classe varie suivant le composant -- il est possible d'avoir besoin d'implémenter cette interface, mais il s'agit bel et bien d'une classe en tant que telle.
Un plugin peut être chargé dans Yaf en utilisant la méthode Yaf_Dispatcher::registerPlugin(), une fois enregistré. Toutes les méthodes implémentées par le plugin sur cette interface seront appelées au moment voulu.
Exemple #1 Exemple d'un plugin
<?php
/* La classe bootstrap doit être définie ici : ./application/Bootstrap.php */
class Bootstrap extends Yaf_Bootstrap_Abstract {
public function _initPlugin(Yaf_Dispatcher $dispatcher) {
/* Enregistre un plugin */
$dispatcher->registerPlugin(new TestPlugin());
}
}
/* La classe du plugin doit être placée ici : ./application/plugins/ */
class TestPlugin extends Yaf_Plugin_Abstract {
public function routerStartup(Yaf_Request_Abstract $request, Yaf_Response_Abstract $response) {
/* avant le routage, l'utilisateur peut faire quelques réécritures d'URL */
var_dump("routerStartup");
}
public function routerShutdown(Yaf_Request_Abstract $request, Yaf_Response_Abstract $response) {
/* le routage est terminé, l'utilisateur peut vérifier l'identifiant */
var_dump("routerShutdown");
}
public function dispatchLoopStartup(Yaf_Request_Abstract $request, Yaf_Response_Abstract $response) {
var_dump("dispatchLoopStartup");
}
public function preDispatch(Yaf_Request_Abstract $request, Yaf_Response_Abstract $response) {
var_dump("preDispatch");
}
public function postDispatch(Yaf_Request_Abstract $request, Yaf_Response_Abstract $response) {
var_dump("postDispatch");
}
public function dispatchLoopShutdown(Yaf_Request_Abstract $request, Yaf_Response_Abstract $response) {
/* Dernière partie : l'utilisateur peut journaliser ou implémenter la mise en page */
var_dump("dispatchLoopShutdown");
}
}
Class IndexController extends Yaf_Controller_Abstract {
public function indexAction() {
return FALSE; //prevent rendering
}
}
$config = array(
"application" => array(
"directory" => dirname(__FILE__) . "/application/",
),
);
$app = new Yaf_Application($config);
$app->bootstrap()->run();
?>Résultat de l'exemple ci-dessus est similaire à :
string(13) "routerStartup" string(14) "routerShutdown" string(19) "dispatchLoopStartup" string(11) "preDispatch" string(12) "postDispatch" string(20) "dispatchLoopShutdown"
All the methods which the plugin implemented according to this interface, will be called at the proper time automatically.