PHP Magic方法__get

时间:2016-12-08 01:36:00

标签: php get overloading

当调用魔术方法__get时,我有点困惑。 这是一个小例子

class Test {


    public function __get($name) {
        echo $name;
    }

}

$a = new Test;

echo 'a '.$a->b.' c'; 

它输出" ba c",虽然我希望得到" a b c"

1 个答案:

答案 0 :(得分:1)

嗯,这是因为你在calee被召唤之前正在调用另一个echo

class Test {


    public function __get($name) {
        return $name;
    }

}

$a = new Test;

echo 'a '.$a->b.' c'; 

记住,执行的顺序。一旦执行了该函数内的所有函数调用,就会执行一条语句。在您的代码中,echo 'a '.$a->b.' c';仅在$a->b执行后执行,原始代码中$a->b echo - 要求的属性名称返回到它的calee。