先來了解一下PHP類中的__get和__set函數
當試圖獲取一個不可達屬性時,類會自動調用__get函數。
當試圖設置一個不可達屬性時,類會自動調用__set函數。
首先,來看一下__get函數,先來獲取一個可達屬性試試:
?php html' target='_blank'>class A{ public $a=1; private $b=2; function __get($name){ echo you can get .$name; $dy = new A(); echo $dy- ?
看一下它的返回:
1
沒有問題,沒有調用__get函數,現在我來訪問一個私有的不可達屬性:
?php class A{ public $a=1; private $b=2; function __get($name){ echo you can get .$name; $dy = new A(); echo $dy- ?
會發現:
you can get b
說明這里調用了__get函數,我再來看一下__set函數,同樣也是先使用可達的public屬性:
?php class A{ public $a; private $b; function __set($name,$val){ echo you can get .$name.$val; $dy = new A(); $dy- a = 1; echo $dy- ?
看一下輸出:
1
使用成功,沒有問題,接著我們來使用私有屬性:
?php class A{ public $a; private $b; function __set($name,$val){ echo you can get .$name.$val; $dy = new A(); $dy- b = 1; echo $dy- ?
這時看到:
you can get b1PHP Fatal error: Cannot access private property A::$b in /usercode/file.php on line 11
這里調用了__set函數并提示我們不能使用類的私有屬性。
現在來通過__set函數實現外部使用私有屬性:
?php class A{ public $a; private $b; function __set($name,$val){ $this- $name=$val; function B(){ echo $this- $dy = new A(); $dy- b = 1; $dy- ?
看一下輸出:
1
說明使用成功。
相關推薦:
thinkphp框架下PHP實現pdf導出功能的代碼
PHP中strpos函數的深入分析
以上就是php中外部類調用_get函數和_set函數的方法的詳細內容,PHP教程
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。
新聞熱點
疑難解答