鉴于以下简单的类......
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)的混合结果。
有没有人有任何不一致的想法?