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

Ler*_*eri 0 php

我上了课:

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;)?

rid*_*rid 6

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

function __get($name) {
    return $_SESSION[$name];
}
Run Code Online (Sandbox Code Playgroud)