Ejemplo #1 Plugins
Un plugin se integra en el ciclo de despacho extendiendo Yaf_Plugin_Abstract y sobreescribiendo uno o más de sus seis métodos de enganche; luego se registra en el despachador con Yaf_Dispatcher::registerPlugin(), normalmente en el Bootstrap:
<?php
class UserPlugin extends Yaf_Plugin_Abstract
{
public function routerStartup(
Yaf_Request_Abstract $request, Yaf_Response_Abstract $response)
{
// antes del enrutamiento: inspeccionar o reescribir la URI de la petición en bruto
}
public function routerShutdown(
Yaf_Request_Abstract $request, Yaf_Response_Abstract $response)
{
// después del enrutamiento: módulo/controlador/acción son conocidos, adecuado para control de acceso por ruta
}
public function dispatchLoopStartup(
Yaf_Request_Abstract $request, Yaf_Response_Abstract $response)
{
// antes del bucle de despacho: configuración única compartida por todos los despachos
}
public function preDispatch(
Yaf_Request_Abstract $request, Yaf_Response_Abstract $response)
{
// antes de cada despacho: filtrar parámetros o redirigir antes de ejecutar la acción
}
public function postDispatch(
Yaf_Request_Abstract $request, Yaf_Response_Abstract $response)
{
// después de cada despacho: decorar la respuesta o la vista renderizada
}
public function dispatchLoopShutdown(
Yaf_Request_Abstract $request, Yaf_Response_Abstract $response)
{
// después del bucle de despacho: limpieza final, registro o vaciado
}
}
class Bootstrap extends Yaf_Bootstrap_Abstract
{
public function _initPlugin(Yaf_Dispatcher $dispatcher)
{
$dispatcher->registerPlugin(new UserPlugin());
}
}
?>