PHP简单拦截器的实现

最近在看Yii的源代码,收获了不少,这里就是从中得到的启发,而写的一个简单拦截器的实现下面看例子:

 1 <?php
 2 class A{
 3     private $_e = array();
 4    
 5     public function attachEvent($name,$handle){
 6         $this->_e[$name] = $handle;
 7     }
 8    
 9     public function raiseEvent($name){
10          call_user_func($this->_e[$name]);
11     }
12    
13     public function action(){
14         $this->raiseEvent("befor");
15         echo "hahaha";
16         $this->raiseEvent("after");
17     }
18 }
19 
20 function beforAction(){
21     echo "befor action";
22 }
23 
24 function afterAction(){
25     echo "after action";
26 }
27 
28 
29 $a = new A();
30 $a->attachEvent("befor", "beforAction");
31 $a->attachEvent("after", "afterAction");
32 
33 $a->action();

 

 这里思路蛮好的,可以在任何你想调用的函数前调用自己的拓展的功能,Yii里面的拦截器就是这么实现的。这里的event你可以添加N个,我为了让人更易懂,就没有拓展。

posted @ 2014-07-28 15:57  [九狐科技]keheng  阅读(1584)  评论(0编辑  收藏  举报