先看看官方文件的解釋
__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 也可以用 protected public 替代
private
function
__set(
$name
,
$value
)
}
$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
?>
結果:如果沒有__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 魔術方法 set
先看看官方文件的解釋 set is run when writing data to inaccessible properties.get is utilized for reading data from inaccessible properties.究竟用中文怎麼翻譯呢?inaccessib...
PHP 魔術方法 set
set is run when writing data to inaccessible properties.get is utilized for reading data from inaccessible properties.究竟用中文怎麼翻譯呢?inaccessible n.難達到 難接...
PHP 魔術方法 set
set is run when writing data to inaccessible properties.get is utilized for reading data from inaccessible properties.究竟用中文怎麼翻譯呢?inaccessible n.難達到 難接...