对于类函数内部的$$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也是一个无法动态引用的特殊变量。
(我在这里很难找到这个问题,所以我不确定此问题是否曾被提出过)
答案 0 :(得分:1)
不是那样,它不能。您的代码归结为尝试访问未定义的局部变量$bang
,而不是定义为类属性的$this->bang
。
你需要
function bizz($string) {
echo $this->{$string};
}
代替