PHP 魔術方法__set __get 方法

WBOY
發布: 2016-07-29 09:02:13
原創
903 人瀏覽過

先看看官方文檔的解釋
__set() is run when writing data to inaccessible properties.
__get() is utilized for reading data from inaccessible properties.
究竟用中文怎麼翻譯呢?   inaccessible :n. 難達到;難接近;無法理解。
有程式碼有真相:

<?php

    

private $ a

;

    private $b 

= 0;

    public $c

;

  0;     

    //這裡的 private 可用 protected public 取代    

private

 function 

__get(

{        

return 123;      //這裡的 private 也可以用 protected public 替換

    private function __set(

$value) {

        

echo

 "This is set function";

    }}}

}}

}

}

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->e) 會有一個notice,提示沒有定義屬性$e
總結:
1. 從一個難以存取的屬性讀取資料的時候__get()方法被呼叫
2. 向一個難以存取的屬性賦值的時候__set() 方法被呼叫
3. 難以存取包括:(1)私有屬性,(2) 沒有初始化的屬性
4.__isset() __unset( ) 也類似

以上就介紹了PHP 魔術方法__set __get 方法,包括了方面的內容,希望對PHP教程有興趣的朋友有幫助。

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板