今天在维护原先的项目时,发现了这样一行代码,
$this->{$var}
查找了资料发现,$this->{$xxx}
和$this->xxx
是两个完全不同的事情。后者将请求var
类变量,而另一个将请求包含在字符串中的变量的名称$var
。如果$var
是字符串,'foo'
那么它会请求$this->foo
等等。
这对于动态编程非常有用(只有在运行时才知道变量的名称)。但是{}
在字符串上下文中的经典符号是非常强大的,特别是当你有一个奇怪的变量名时:
${'y - x'} = 'Ok';
$var = 'y - x';
echo ${$var};