Exemple #1 Plugins
Un plugin s'insère dans le cycle de distribution en étendant Yaf_Plugin_Abstract et en redéfinissant une ou plusieurs de ses six méthodes d'accrochage, puis il est enregistré auprès du distributeur avec Yaf_Dispatcher::registerPlugin(), typiquement dans le Bootstrap :
<?php
class UserPlugin extends Yaf_Plugin_Abstract
{
public function routerStartup(
Yaf_Request_Abstract $request, Yaf_Response_Abstract $response)
{
// avant le routage : inspecte ou réécrit l'URI brute de la requête
}
public function routerShutdown(
Yaf_Request_Abstract $request, Yaf_Response_Abstract $response)
{
// après le routage : module/contrôleur/action sont connus, idéal pour un contrôle d'accès par route
}
public function dispatchLoopStartup(
Yaf_Request_Abstract $request, Yaf_Response_Abstract $response)
{
// avant la boucle de distribution : initialisation unique partagée par toutes les distributions
}
public function preDispatch(
Yaf_Request_Abstract $request, Yaf_Response_Abstract $response)
{
// avant chaque distribution : filtre les paramètres ou redirige avant l'exécution de l'action
}
public function postDispatch(
Yaf_Request_Abstract $request, Yaf_Response_Abstract $response)
{
// après chaque distribution : décore la réponse ou la vue rendue
}
public function dispatchLoopShutdown(
Yaf_Request_Abstract $request, Yaf_Response_Abstract $response)
{
// après la boucle de distribution : nettoyage final, journalisation ou vidage des tampons
}
}
class Bootstrap extends Yaf_Bootstrap_Abstract
{
public function _initPlugin(Yaf_Dispatcher $dispatcher)
{
$dispatcher->registerPlugin(new UserPlugin());
}
}
?>