Php/docs/class.yaf-plugin-abstract

提供:Dev Guides
< Php
移動先:案内検索

(Yaf >=1.0.0)

はじめに

プラグインを使えば、フレームワークの拡張やカスタマイズを簡単に行えます。

プラグインは、クラスとして定義します。 実際のクラスの定義はコンポーネントによって異なります。 このインターフェイスを実装する必要があるかもしれませんが、 プラグイン自体がクラスであるという事実は変わりません。

プラグインを Yaf にロードするには Yaf_Dispatcher::registerPlugin() を使います。登録を済ませれば、このインターフェイスに従って実装した すべてのメソッドが適切な場面で呼ばれます。


例1 プラグインの例

<?php   /* bootstrap class should be defined under ./application/Bootstrap.php */   class Bootstrap extends Yaf_Bootstrap_Abstract {        public function _initPlugin(Yaf_Dispatcher $dispatcher) {            /* register a plugin */            $dispatcher->registerPlugin(new TestPlugin());        }   }   /* plugin class should be placed under ./application/plugins/ */   class TestPlugin extends Yaf_Plugin_Abstract {        public function routerStartup(Yaf_Request_Abstract $request, Yaf_Response_Abstract $response) {            /* before router                in this hook,  user can do some url rewrite */            var_dump("routerStartup");        }        public function routerShutdown(Yaf_Request_Abstract $request, Yaf_Response_Abstract $response) {            /* router complete                in this hook, user can do login check */            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) {            /* final hook               in this hook user can do logging or implement layout */            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 dispatchLoopShutdown ( Yaf_Request_Abstract $request , Yaf_Response_Abstract $response ) : void

public dispatchLoopStartup ( Yaf_Request_Abstract $request , Yaf_Response_Abstract $response ) : void

public postDispatch ( Yaf_Request_Abstract $request , Yaf_Response_Abstract $response ) : void

public preDispatch ( Yaf_Request_Abstract $request , Yaf_Response_Abstract $response ) : void

public preResponse ( Yaf_Request_Abstract $request , Yaf_Response_Abstract $response ) : void

public routerShutdown ( Yaf_Request_Abstract $request , Yaf_Response_Abstract $response ) : void

public routerStartup ( Yaf_Request_Abstract $request , Yaf_Response_Abstract $response ) : void

}

目次