当调用魔术方法__get时,我有点困惑。 这是一个小例子
class Test {
public function __get($name) {
echo $name;
}
}
$a = new Test;
echo 'a '.$a->b.' c';
它输出" ba c",虽然我希望得到" a b c"
答案 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。