©
本文档使用
php.cn手册 发布
(Yaf >=1.0.0)
Plugins 可以让你轻松地定制和扩展框架
插件(Plugins)是一个类。 基于组件定义的类会有所变化 -- 你可能需要去实现这些接口。 但实际上,该插件(Plugin)本身就是一个类。
一个插件(plugin)会被 Yaf_Dispatcher::registerPlugin() 加载到Yaf框架中, 在框架注册(registerd)后,插件(plugin)类中定义方法将会在恰当的时间被该接口执行。
Example #1 Plugin example
<?php
class Bootstrap extends Yaf_Bootstrap_Abstract {
public function _initPlugin ( Yaf_Dispatcher $dispatcher ) {
$dispatcher -> registerPlugin (new TestPlugin ());
}
}
class TestPlugin extends Yaf_Plugin_Abstract {
public function routerStartup ( Yaf_Request_Abstract $request , Yaf_Response_Abstract $response ) {
var_dump ( "routerStartup" );
}
public function routerShutdown ( Yaf_Request_Abstract $request , Yaf_Response_Abstract $response ) {
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 ) {
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 ();
?>
以上例程的输出类似于:
string(13) "routerStartup" string(14) "routerShutdown" string(19) "dispatchLoopStartup" string(11) "preDispatch" string(12) "postDispatch" string(20) "dispatchLoopShutdown"
$request
, Yaf_Response_Abstract $response
)$request
, Yaf_Response_Abstract $response
)$request
, Yaf_Response_Abstract $response
)$request
, Yaf_Response_Abstract $response
)$request
, Yaf_Response_Abstract $response
)$request
, Yaf_Response_Abstract $response
)$request
, Yaf_Response_Abstract $response
)[#1] gianjason#gmail.com [2013-01-09 07:59:34]
All the methods which the plugin implemented according to this interface, will be called at the proper time automatically.