我上了课:
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;
)?
答案 0 :(得分:6)
__get()
必须返回值。将其更改为:
function __get($name) {
return $_SESSION[$name];
}