PHP 7.0.6 Released

The Yaf_Plugin_Abstract class

(Yaf >=1.0.0)


Plugins allow for easy extensibility and customization of the framework.

Plugins are classes. The actual class definition will vary based on the component -- you may need to implement this interface, but the fact remains that the plugin is itself a class.

A plugin could be loaded into Yaf by using Yaf_Dispatcher::registerPlugin(), after registerd, All the methods which the plugin implemented according to this interface, will be called at the proper time.


Example #1 Plugin example

/* 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 $requestYaf_Response_Abstract $response) {
/* before router 
               in this hook,  user can do some url rewrite */
        public function 
routerShutdown(Yaf_Request_Abstract $requestYaf_Response_Abstract $response) {
/* router complete 
               in this hook, user can do login check */
        public function 
dispatchLoopStartup(Yaf_Request_Abstract $requestYaf_Response_Abstract $response) {
        public function 
preDispatch(Yaf_Request_Abstract $requestYaf_Response_Abstract $response) {
        public function 
postDispatch(Yaf_Request_Abstract $requestYaf_Response_Abstract $response) {
        public function 
dispatchLoopShutdown(Yaf_Request_Abstract $requestYaf_Response_Abstract $response) {
/* final hoook
               in this hook user can do loging or implement layout */

IndexController extends Yaf_Controller_Abstract {
        public function 
indexAction() {
FALSE//prevent rendering

$config = array(
"application" => array(
"directory" => dirname(__FILE__) . "/application/",
$app = new Yaf_Application($config);

The above example will output something similar to:

string(13) "routerStartup"
string(14) "routerShutdown"
string(19) "dispatchLoopStartup"
string(11) "preDispatch"
string(12) "postDispatch"
string(20) "dispatchLoopShutdown"

Class synopsis

Yaf_Plugin_Abstract {
/* Methods */
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

User Contributed Notes
3 years ago
All the methods which the plugin implemented according to this interface, will be called at the proper time automatically.
To Top