文字

The Yaf_Plugin_Abstract class

(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"

类摘要

Yaf_Plugin_Abstract {
public void dispatchLoopShutdown ( Yaf_Request_Abstract $request , Yaf_Response_Abstract $response )
public void dispatchLoopStartup ( Yaf_Request_Abstract $request , Yaf_Response_Abstract $response )
public void postDispatch ( Yaf_Request_Abstract $request , Yaf_Response_Abstract $response )
public void preDispatch ( Yaf_Request_Abstract $request , Yaf_Response_Abstract $response )
public void preResponse ( Yaf_Request_Abstract $request , Yaf_Response_Abstract $response )
public void routerShutdown ( Yaf_Request_Abstract $request , Yaf_Response_Abstract $response )
public void routerStartup ( Yaf_Request_Abstract $request , Yaf_Response_Abstract $response )
}

Table of Contents

  • Yaf_Plugin_Abstract::dispatchLoopShutdown — The dispatchLoopShutdown purpose
  • Yaf_Plugin_Abstract::dispatchLoopStartup — The dispatchLoopStartup purpose
  • Yaf_Plugin_Abstract::postDispatch — The postDispatch purpose
  • Yaf_Plugin_Abstract::preDispatch — The preDispatch purpose
  • Yaf_Plugin_Abstract::preResponse — The preResponse purpose
  • Yaf_Plugin_Abstract::routerShutdown — The routerShutdown purpose
  • Yaf_Plugin_Abstract::routerStartup — RouterStartup hook

用户评论:

[#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.

上一篇: 下一篇: