我正在尝试在类上设置一个模糊变量。这些方面的东西:
<?php
class MyClass {
public $values;
function __get($key){
return $this->values[$key];
}
function __set($key, $value){
$this->values[$key]=$value;
}
}
$user= new MyClass();
$myvar = "Foo";
$user[$myvar] = "Bar";
?>
有没有办法做到这一点?
答案 0 :(得分:4)
如前所述$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
)
)
)
)
答案 1 :(得分:3)
答案 2 :(得分:1)
使用 - &gt;访问成员变量操作
$user->$myvar = "Bar";