__set()
is run when writing data to inaccessible properties.__get()
is utilized for reading data from inaccessible properties.
究竟用中文怎么翻译呢? inaccessible :n. 难达到;难接近;无法理解。
有代码有真相:
1 |
|
结果:
如果没有__get
方法,执行 var_dump($s->a) var_dump($s->b) 会有致命的错误
如果没有__get
方法,执行 var_dump($s->e) 会有一个notice,提示没有定义属性 $e
总结:
- 从一个难以访问的属性读取数据的时候
__get()
方法被调用 - 向一个难以访问的属性赋值的时候
__set()
方法被调用 - 难以访问包括:(1)私有属性,(2)没有初始化的属性
__isset()
__unset()
也类似