php中的动态类属性$$值

Cam*_*lis 38 php variables properties class dynamic

如何只知道字符串引用类属性?

class Foo
{
    public $bar;

    public function TestFoobar()
    {
        $this->foobar('bar');
    }

    public function foobar($string)
    {
         echo $this->$$string; //doesn't work
    }
}
Run Code Online (Sandbox Code Playgroud)

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

Ant*_*ley 67

使用字符串变量引用对象的成员变量时,只需要使用一个$.

echo $this->$string;
Run Code Online (Sandbox Code Playgroud)


小智 31

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

$this->{$this->myvar} = $value;
Run Code Online (Sandbox Code Playgroud)

即使它们是对象,它们仍然起作用:

$this->{$this->myobjname}->somemethod();
Run Code Online (Sandbox Code Playgroud)

  • 如果您将文字与动态变量结合起来,这也很方便,例如: `$this->{"my_prop_".$i}` (2认同)

Mat*_* H. 19

正如其他人提到的那样,$ this - > $ string应该可以解决问题.

但是,这个

$this->$$string;
Run Code Online (Sandbox Code Playgroud)

将实际评估字符串,并再次评估其结果.

$foo = 'bar';
$bar = 'foobar';
echo $$foo; //-> $'bar' -> 'foobar'
Run Code Online (Sandbox Code Playgroud)