可以一个(双变量)$$变量访问类属性吗?

时间:2015-12-11 21:09:23

标签: php

对于类函数内部的$$var,有哪些范围缺少更好的术语? ($$var语法的限制和能力是什么?)

class foo{
    private $bar = 'class property';

    function bizz($string)
    {
        $bang = 'method prop';
        echo $$string;
    }
}

$f = new foo();
$f->bizz('bar'); //error
$f->bizz('this->bar'); //error
$f->bizz('bang'); //'method prop'
$f->bizz('string'); //'string'

有没有办法用这种语法引用具有非局部范围的变量或方法?

我知道$this->$string可以访问类属性,但我特别想知道$$var语法及其限制和能力。

  

编辑我在发布问题后在php的文档中找到了这个问题 - http://php.net/manual/en/language.variables.variable.php

     
    

警告

         

请注意,变量变量不能与PHP的函数或类方法中的超全局数组一起使用。变量$ this也是一个无法动态引用的特殊变量。

  

(我在这里很难找到这个问题,所以我不确定此问题是否曾被提出过)

1 个答案:

答案 0 :(得分:1)

不是那样,它不能。您的代码归结为尝试访问未定义的局部变量$bang,而不是定义为类属性的$this->bang

你需要

function bizz($string) {
    echo $this->{$string};
}

代替