【问题标题】:PHP Magic methods __getPHP 魔术方法 __get
【发布时间】:2016-12-08 01:36:00
【问题描述】:

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

class Test {


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

}

$a = new Test;

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

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

【问题讨论】:

  • 显然导致echo $name;echo 'a '.$a->b.' c'; 之前执行,尝试将echo $name; 更改为return $name;
  • @BagusTesa 你应该把它作为答案发布。
  • 好的@MichaelBerkowski,谢谢
  • 因为 __get 会自动显示 b 而不是返回它。

标签: php get overloading


【解决方案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->becho - 询问的属性名称而不是 returning它的 calee。

【讨论】:

  • 我不知道执行顺序。那是我的问题。谢谢。
猜你喜欢
  • 2011-06-10
  • 2010-12-26
  • 2015-07-23
  • 2011-04-26
  • 1970-01-01
  • 2012-04-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多