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时,只需要$$string
string。 由于通常在类中,您可以像$obj->property
一样访问它,所以只需要添加一个$
。
要记住确切的语法,请记住,您使用比通常使用更多的$
。 当你使用$object->property
访问一个对象属性时,dynamic访问是通过$object->$property_name
。