php中的动态类属性$$value
如何引用只知道字符串的类属性php中的动态类属性$$value,php,class,dynamic,variables,properties,Php,Class,Dynamic,Variables,Properties,如何引用只知道字符串的类属性 class Foo { public $bar; public function TestFoobar() { $this->foobar('bar'); } public function foobar($string) { echo $this->$$string; //doesn't work } } 计算字符串的正确方法是什么?使用字符串变量引用对象的
class Foo
{
public $bar;
public function TestFoobar()
{
$this->foobar('bar');
}
public function foobar($string)
{
echo $this->$$string; //doesn't work
}
}
计算字符串的正确方法是什么?使用字符串变量引用对象的成员变量时,只需使用一个$
echo $this->$string;
你很接近。您刚刚添加了一个额外的$sign
public function foobar($string)
{
echo $this->$string; //will work
}
当访问仅名称存储在字符串中的局部变量时,您只需要
$$string
。因为通常在类中,您可以像$obj->property
那样访问它,所以您只需要添加一个$
,正如其他人所提到的,$this->$string应该就可以了
但是,
$this->$$string;
将实际计算字符串,并再次计算其结果
$foo = 'bar';
$bar = 'foobar';
echo $$foo; //-> $'bar' -> 'foobar'
要记住确切的语法,请记住您使用的
$
比通常使用的多。当您使用$object->property
访问对象属性时,动态访问是通过$object->$property\u name
完成的。如果您想使用属性值获取属性名称,则需要使用“{”括号:
$this->{$this->myvar} = $value;
即使它们是对象,它们也能工作:
$this->{$this->myobjname}->somemethod();
令人惊讶的是,PHP允许这些结构!但对其他人来说也可能非常模糊。如果您将文字与动态变量相结合,这也很方便,例如:
$this->{“my_prop..”$i}
这种语法在php7(.1?)中可能会遇到挑战,请遵循Rick下面的答案,使其在那里正常工作。
$this->{$this->myobjname}->somemethod();