PHP 魔術方法 set

2021-07-10 03:24:57 字數 1767 閱讀 4996

先看看官方文件的解釋

__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);

classstu

//這裡的 private 也可以用 protected public 替代

privatefunction__set($name,$value)

}

$s=newstu();

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.難達到 難接...