PHP魔术方法和操作顺序

时间:2017-03-07 04:44:44

标签: php getter-setter

鉴于以下简单的类......

class Test {
  public function __get($name) {
    echo 'Magic __get() called for: ' . $name;
  }
}

调用代码......

$field = "Test";
$object = new Test();
$value = $object->$field[0];

所以,首先,我理解这个例子是超级简单的,但我假设我希望我的“Test”属性作为数组返回,因此最后一行$object->$field[0]是Test属性的第一项

这是我看到一些非常奇怪的行为的地方。我已经在至少4台不同的计算机上运行了这个,看到了两个结果......结果(在这个简单的例子中)是:

Magic __get() called for: Test

OR

Magic __get() called for: T

它几乎归结为一种操作类型的东西。可以在调用__get()之前调用数组键[0],从而调用__get('T')。或者,__ get()可以传递完整的变量值“Test”,然后可以在之后计算数组键。令我感到困惑的是,为什么我在不同的服务器上看到不同的结果。我也看到了相同版本的PHP(7.0和5.6)的混合结果。

有没有人有任何不一致的想法?

0 个答案:

没有答案