PHP Velho Oeste 2024

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 registering, 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 $request, Yaf_Response_Abstract $response) {
/* before router
in this hook, user can do some url rewrite */
public function
routerShutdown(Yaf_Request_Abstract $request, Yaf_Response_Abstract $response) {
/* router complete
in this hook, user can do login check */
public function
dispatchLoopStartup(Yaf_Request_Abstract $request, Yaf_Response_Abstract $response) {
public function
preDispatch(Yaf_Request_Abstract $request, Yaf_Response_Abstract $response) {
public function
postDispatch(Yaf_Request_Abstract $request, Yaf_Response_Abstract $response) {
public function
dispatchLoopShutdown(Yaf_Request_Abstract $request, Yaf_Response_Abstract $response) {
/* final hook
in this hook user can do logging 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

Table of Contents

add a note

User Contributed Notes 1 note

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