|
先看看php官方文档的解释:
__set() is run when writing data to inaccessible properties.
__get() is utilized for reading data from inaccessible properties.
究竟用中文怎么翻译呢?
inaccessible :n. 难达到;难接近;无法理解。
有代码有真相:
[U]复制代码[/U] 代码如下:
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
?>
结果分析:
如果没有__get方法,执行 var_dump($s->a) var_dump($s->b) 会有致命的错误
如果没有__get方法,执行 var_dump($s->e) 会有一个notice,提示没有定义属性 $e
总结:
1. 从一个难以访问的属性读取数据的时候 __get() 方法被调用
2. 向一个难以访问的属性赋值的时候 __set() 方法被调用
3. 难以访问包括:(1)私有属性,(2)没有初始化的属性
4. __isset() __unset() 也类似
您可能感兴趣的文章:php 魔术方法使用说明基于PHP5魔术常量与魔术方法的详解深入PHP5中的魔术方法详解php中的常用魔术方法总结php面向对象中的魔术方法中文说明PHP类中的魔术方法(Magic Method)简明总结PHP 5.3新增魔术方法__invoke概述php常见的魔术方法详解PHP中的常见魔术方法功能作用及用法实例PHP中常用的魔术方法
|
|