是否可以在同一属性上覆盖__get
和__set
的递归限制。我希望能够以不同于第一个条目的方式处理第二次重新进入。
此代码示例不实用,但最简单的说明。
class Foo {
public function __set($name,$value){
print "$name entered\n";
this->$name = $value; // want it to recurse here
}
}
$a = new Foo();
$a->baz = "derp";
print $a->baz;
// should get (cannot test at the moment)
// baz entered
// derp <- you get derp because the current php implementation creates an instance variable from the second call to __set
我的互联网已关闭,所以我在手机上打字,因此可能会出现错别字。
答案 0 :(得分:0)
使用该语法无法做到这一点。只需直接拨打__set
,例如:
class Foo {
public function __set($name, $value) {
print "$name entered\n";
$this->__set($name, $value);
}
}
答案 1 :(得分:0)
我知道这是一个老问题,但我认为这正是你真正想要的。
<?php
class Foo {
private $_data = array();
public function __set($name,$value){
print "$name entered\n";
$this->_data[$name] = $value;
}
public function __get($name){
if(array_key_exists($name, $this->_data)){
return $this->_data[$name];
} else {
return false;
}
}
}
$a = new Foo();
$a->baz = "derp";
print $a->baz;
?>