2012-05-27 44 views
0

我做了一個類:爲什麼在使用__get()分配它的值時屬性爲null?

class MyClass { 
    function __get($name) { 
     $this->{$name} = $_SESSION[$name]; 
    } 

    public function isNull(){ 
     return $this->MyVar === null; 
    } 
} 

var_dump($obj->isNull()) //$obj is instance of MyClass總是輸出bool(true)$_SESSION['MyVar']設置與否並不重要。但如果我在return $this->MyVar === null;按預期工作之前添加$this->MyVar;

好像看起來__get()被執行(因爲$MyVar沒有設置,所以它是無法訪問的),但屬性保持NULL,直到第二次使用。

這是否發生,因爲它沒有設置?我怎樣才能避免使用額外的線($this->MyVar;)?

+1

爲什麼要在getter中設置屬性? – BoltClock

回答

6

__get()必須返回該值。將其更改爲:

function __get($name) { 
    return $_SESSION[$name]; 
} 
+0

哦,當然。我問過真正愚蠢的問題。謝謝。 – Leri

相關問題