PHP__get和__set魔术方法
2022-08-30 07:56:26
除非我完全弄错了,否则 and 方法应该允许重载 → 和 .__get
__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