PHP中的dynamic类属性$$值

我怎样才能知道只有一个string的类属性?

class Foo { public $bar; public function TestFoobar() { $this->foobar('bar'); } public function foobar($string) { echo $this->$$string; //doesn't work } } 

什么是评估string的正确方法?

只有在使用stringvariables引用对象的成员variables时,才需要使用$。

 echo $this->$string; 

如果您想使用属性值来获取属性的名称,则需要使用“{”括号:

 $this->{$this->myvar} = $value; 

即使他们是对象,他们的工作:

 $this->{$this->myobjname}->somemethod(); 

正如其他人所提到的,$ this – > $ string应该可以做到。

但是,这个

 $this->$$string; 

将实际评估string,并再次评估结果。

 $foo = 'bar'; $bar = 'foobar'; echo $$foo; //-> $'bar' -> 'foobar' 

你非常接近。 你刚刚添加了1个额外的$符号。

 public function foobar($string) { echo $this->$string; //will work } 
 echo $this->$string; //should work 

访问只有名称存储在string中的局部variables时,只需要$$stringstring。 由于通常在类中,您可以像$obj->property一样访问它,所以只需要添加一个$

要记住确切的语法,请记住,您使用比通常使用更多的$ 。 当你使用$object->property访问一个对象属性时,dynamic访问是通过$object->$property_name