示例 #1 插件
插件通过继承 Yaf_Plugin_Abstract 并重写其六个 钩子方法中的一个或多个来挂入分发循环,然后通常在 Bootstrap 中使用 Yaf_Dispatcher::registerPlugin() 注册到分发器上:
<?php
class UserPlugin extends Yaf_Plugin_Abstract
{
public function routerStartup(
Yaf_Request_Abstract $request, Yaf_Response_Abstract $response)
{
// before routing: inspect or rewrite the raw request URI
}
public function routerShutdown(
Yaf_Request_Abstract $request, Yaf_Response_Abstract $response)
{
// after routing: module/controller/action are known, good for per-route access control
}
public function dispatchLoopStartup(
Yaf_Request_Abstract $request, Yaf_Response_Abstract $response)
{
// before the dispatch loop: one-time setup shared by all dispatches
}
public function preDispatch(
Yaf_Request_Abstract $request, Yaf_Response_Abstract $response)
{
// before each dispatch: filter parameters or redirect before the action runs
}
public function postDispatch(
Yaf_Request_Abstract $request, Yaf_Response_Abstract $response)
{
// after each dispatch: decorate the response or the rendered view
}
public function dispatchLoopShutdown(
Yaf_Request_Abstract $request, Yaf_Response_Abstract $response)
{
// after the dispatch loop: final cleanup, logging or flushing
}
}
class Bootstrap extends Yaf_Bootstrap_Abstract
{
public function _initPlugin(Yaf_Dispatcher $dispatcher)
{
$dispatcher->registerPlugin(new UserPlugin());
}
}
?>