我上了课:
class MyClass {
function __get($name) {
$this->{$name} = $_SESSION[$name];
}
public function isNull(){
return $this->MyVar === null;
}
}
Run Code Online (Sandbox Code Playgroud)
var_dump($obj->isNull()) //$obj is instance of MyClass
始终输出bool(true)
无关紧要$_SESSION['MyVar']
设定与否.但如果我按照预期添加$this->MyVar;
之前return $this->MyVar === null;
.
好吧,它似乎__get()
已执行(因为$MyVar
未设置,因此它无法访问)但属性在第二次使用之前保持为NULL.
它会发生,因为它根本没有设置?如何避免使用额外的line($this->MyVar;
)?
__get()
必须返回值.将其更改为:
function __get($name) {
return $_SESSION[$name];
}
Run Code Online (Sandbox Code Playgroud)