如何只知道字符串引用类属性?
class Foo
{
public $bar;
public function TestFoobar()
{
$this->foobar('bar');
}
public function foobar($string)
{
echo $this->$$string; //doesn't work
}
}
评估字符串的正确方法是什么?
答案 0 :(得分:67)
使用字符串变量引用对象的成员变量时,只需要使用一个$。
echo $this->$string;
答案 1 :(得分:31)
如果要使用属性值来获取属性的名称,则需要使用“{”括号:
$this->{$this->myvar} = $value;
即使他们是对象,他们也会工作:
$this->{$this->myobjname}->somemethod();
答案 2 :(得分:19)
正如其他人所提到的,$ this-> $ string应该可以解决问题。
但是,这个
$this->$$string;
实际上会评估字符串,并再次评估结果。
$foo = 'bar';
$bar = 'foobar';
echo $$foo; //-> $'bar' -> 'foobar'
答案 3 :(得分:3)
public function foobar($string)
{
echo $this->$string; //will work
}
答案 4 :(得分:0)
echo $this->$string; //should work
访问只有名称存储在字符串中的局部变量时,只需要$$string
。由于您通常在课程中访问$obj->property
,因此您只需添加一个$
。
答案 5 :(得分:0)
要记住确切的语法,请记住您使用的$
比通常使用的更多。当您使用$object->property
访问对象属性时,动态访问将使用$object->$property_name
完成。