正如已經指出$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
請告訴我現在哪種語言是時髦的?我想學習時髦的語言,寫出時髦的代碼。 –