正如已经指出$instance->$property
(或$instance->{$property}
使它跳出)
如果你真的要访问它作为一个数组索引,实现ArrayAccess
界面,并使用offsetGet()
,offsetSet()
等。
class MyClass implements ArrayAccess{
private $_data = array();
public function offsetGet($key){
return $this->_data[$key];
}
public function offsetSet($key, $value){
$this->_data[$key] = $value;
}
// other required methods
}
$obj = new MyClass;
$obj['foo'] = 'bar';
echo $obj['foo']; // bar
注意事项:您不能声明offsetGet
以引用形式返回。然而,__get()
可以允许嵌套数组元素访问$_data
属性,用于读取和写入。
class MyClass{
private $_data = array();
public function &__get($key){
return $this->_data[$key];
}
}
$obj = new MyClass;
$obj->foo['bar']['baz'] = 'hello world';
echo $obj->foo['bar']['baz']; // hello world
print_r($obj);
/* dumps
MyClass Object
(
[_data:MyClass:private] => Array
(
[foo] => Array
(
[bar] => Array
(
[baz] => hello world
)
)
)
)
来源
2011-06-18 20:34:38
Dan
Php不是时髦吗?大声笑 – AntonioCS
请告诉我现在哪种语言是时髦的?我想学习时髦的语言,写出时髦的代码。 –