php中的动态类属性$$值

时间:2009-05-12 18:45:13

标签: 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
    }
}

评估字符串的正确方法是什么?

6 个答案:

答案 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)

你非常接近。你刚加了1个$ sign。

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完成。