国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

詳解php的魔術方法__get()和__set()使用介紹

2024-05-04 23:13:50
字體:
來源:轉載
供稿:網友
先看看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
?>



結果分析:
如果沒有__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() 也類似
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 五华县| 本溪| 昌邑市| 兰溪市| 班玛县| 武功县| 轮台县| 平原县| 麟游县| 裕民县| 依安县| 繁昌县| 兰西县| 黑山县| 辽中县| 皮山县| 白河县| 高邮市| 新沂市| 昌江| 朝阳市| 祁阳县| 高平市| 闽侯县| 余江县| 上饶县| 临颍县| 龙胜| 兴义市| 禄丰县| 莱州市| 军事| 大安市| 峨边| 新干县| 鲁甸县| 汽车| 绿春县| 天峨县| 漳浦县| 海兴县|