除非我完全误解,否则__getand __set方法应该允许→ get和的重载set。
例如,以下语句应调用该__get方法:
echo $foo->bar;
$var = $foo->bar;
并且以下应使用该__set方法:
$foo->bar = 'test';
这在我的代码中不起作用,并且可以通过以下简单示例重现:
class foo {
public $bar;
public function __get($name) {
echo "Get:$name";
return $this->$name;
}
public function __set($name, $value) {
echo "Set:$name to $value";
$this->$name = $value;
}
}
$foo = new foo();
echo $foo->bar;
$foo->bar = 'test';
echo "[$foo->bar]";
这只会导致:
[test]
die()在那儿放一些电话表明它根本没打。
现在,我只是说了一下要解决的问题,并__get在目前需要的地方手动使用它,但这不是很动态,需要知道“重载”代码实际上没有被调用,除非专门调用。我想知道这是否不是应该以我所理解的方式起作用,或者是为什么它不起作用。
正在运行php 5.3.3。
青春有我
呼如林