La classe Yaf_Plugin_Abstract

(Yaf >=1.0.0)

Introduction

Les plugins vous apportent la possibilité d'étendre et de personnaliser facilement le framework.

Les plugins sont des classes. La définition actuelle d'une classe varie suivant le composant -- vous pouvez avoir besoin d'implémenter cette interface, mais il s'agit belle et bien d'une classe en tant que tel.

Un plugin peut être chargé dans Yaf en utilisant la méthode Yaf_Dispatcher::registerPlugin(), une fois enregistré. Toutes les méthodes implémentées par le plugin sur cette interface seront appelées au moment voulu.

Exemples

Exemple #1 Exemple d'un plugin

<?php
   
/* La classe bootstrap doit être définie ici : ./application/Bootstrap.php */
   
class Bootstrap extends Yaf_Bootstrap_Abstract {
        public function 
_initPlugin(Yaf_Dispatcher $dispatcher) {
            
/* Enregistre un plugin */
            
$dispatcher->registerPlugin(new TestPlugin());
        }
   }

   
/* La classe du plugin doit être placée ici : ./application/plugins/ */
   
class TestPlugin extends Yaf_Plugin_Abstract {
        public function 
routerStartup(Yaf_Request_Abstract $requestYaf_Response_Abstract $response) {
            
/* avant le routage, l'utilisateur peut faire quelques ré-écritures d'URL */
            
var_dump("routerStartup");
        }
        public function 
routerShutdown(Yaf_Request_Abstract $requestYaf_Response_Abstract $response) {
            
/* le routage est terminé, l'utilisateur peut vérifier l'identifiant */
            
var_dump("routerShutdown");
        }
        public function 
dispatchLoopStartup(Yaf_Request_Abstract $requestYaf_Response_Abstract $response) {
            
var_dump("dispatchLoopStartup");
        }
        public function 
preDispatch(Yaf_Request_Abstract $requestYaf_Response_Abstract $response) {
            
var_dump("preDispatch");
        }
        public function 
postDispatch(Yaf_Request_Abstract $requestYaf_Response_Abstract $response) {
            
var_dump("postDispatch");
        }
        public function 
dispatchLoopShutdown(Yaf_Request_Abstract $requestYaf_Response_Abstract $response) {
            
/* Dernier partie : l'utilisateur peut s'identifier ou implémenter l'interface */
            
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();
?>

Résultat de l'exemple ci-dessus est similaire à :

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

Synopsis de la classe

Yaf_Plugin_Abstract {
/* Méthodes */
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 routerStartup(Yaf_Request_Abstract $request, Yaf_Response_Abstract $response): void
}

Sommaire

add a note add a note

User Contributed Notes 1 note

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