background image

PHP

 

     拦截器的使用

 

 

PHP 有如下几个拦截器:

1、__get($property)
功能:访问未定义的属性是被调用
2、__set($property, $value)
功能:给未定义的属性设置值时被调用
3、__isset($property)
功能:对未定义的属性调用 isset()时被调用
4、__unset($property)
功能:对未定义的属性调用 unset()时被调用
5、__call($method, $arg_array)
功能:调用未定义的方法时被调用

拦截器,顾名思义,它就 拦截 未定义的属性和方法,有点类似__autoload 和
__construct 等方法,应用案例如下(摘自网络):

1. // 若访问一个未定义的属性,则将调用 get{$property}对应的方法

2.     

function

 __get

(

$property

){

3.         $method 

=

 

"get{$property}"

;

4.         

if

 

(

method_exists

(

$this

,

 $method

)){

5.             

return

 $this

->

$method

();

6.         

}

7.     

}

8.  
9.     

// 若给一个未定义的属性设置值,则将调用 set{$property}对应的方法

10.     

function

 __set

(

$property

,

 $value

){

11.         $method 

=

 

"set{$property}"

;

12.         

if

 

(

method_exists

(

$this

,

 $method

)){

13.             

return

 $this

->

$method

(

$value

);

14.         

}

   

15.     

}

16.    
17.     

// 若用户对未定义的属性调用 isset 方法,

18.     

function

 __isset

(

$property

){

19.         $method 

=

 

"isset{$property}"

;

20.         

if

 

(

method_exists

(

$this

,

 $method

)){

21.             

return

 $this

->

$method

();

22.         

}

23.     

}

24.    
25.     

// 若用户对未定义的属性调用 unset 方法,

26.     

// 则认为调用对应的 unset{$property}方法