为什么在使用__get()赋值时属性为null?

时间:2012-05-27 16:23:22

标签: php

我上了课:

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']已设置。但是,如果我在$this->MyVar;按预期工作之前添加return $this->MyVar === null;

似乎__get()已执行(因为$MyVar未设置,因此无法访问)但属性在第二次使用之前保持为NULL。

是否因为它根本没有设置而发生?如何避免使用额外的行($this->MyVar;)?

1 个答案:

答案 0 :(得分:6)

__get()必须返回值。将其更改为:

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