background image

php 的魔术方法__get()__set()使用说明

php 的魔术方法__get()和__set()使用介绍,需要的朋友可以参考下
先看看 php 官方文档的解释: 
__set() is run when writing data to inaccessible properties. 
__get() is utilized 

for

 reading data from inaccessible properties. 

 

 

究竟用中文怎么翻译呢?
inaccessible :n. 

 

难达到;难接近;无法理解。

 

 

有代码有真相:
代码如下:
 
<?php 

error_reporting

(E_ALL); 

class

 stu{ 

private

 

$a

private

 

$b

 = 0; 

public

 

$c

public

 

$d

 = 0; 

//

 

这里的 private 

 

可以用 protected public 

 

替代

private

 

function

 __get(

$name

) { 

return

 123; 


 

//

 

这里的 private 

 

也可以用 protected public 

 

替代

private

 

function

 __set(

$name

$value

) { 

echo

 "This is set function"; 


$s

 = 

new

 stu(); 

var_dump(

$s

->a); 

//output: 123 

var_dump(

$s

->b); 

//output: 123 

var_dump(

$s

->c); 

//output: null 

var_dump(

$s

->d); 

//output: 0 

var_dump(

$s

->e); 

//output: 123 

$s

->a = 3; 

//output: This is set function 

$s

->c = 3; 

//no output 

$s

->f = 3; 

//output: This is set function 

?>