我理解字符串内使用复杂(花括号)语法的用法,但我不明白它在字符串外的目的。
我刚刚在CakePHP中发现了这段代码,我无法理解:
// $class is a string containg a class name
${$class} =& new $class($settings);
如果有人能帮我理解这里为什么使用“why”,以及这与以下内容的区别是什么:
$class =& new $class($settings);
谢谢。
我理解字符串内使用复杂(花括号)语法的用法,但我不明白它在字符串外的目的。
我刚刚在CakePHP中发现了这段代码,我无法理解:
// $class is a string containg a class name
${$class} =& new $class($settings);
$class =& new $class($settings);
class FooBar { }
// This is an ordinary string.
$nameOfClass = "FooBar";
// Make a variable called (in this case) "FooBar", which is the
// value of the variable $nameOfClass.
${$nameOfClass} = new $nameOfClass();
if(isset($FooBar))
echo "A variable called FooBar exists and its class name is " . get_class($FooBar);
else
echo "No variable called FooBar exists.";
在PHP中,使用${$something}
或$$something
被称为“变量变量”。
因此,在这种情况下,创建了一个名为$FooBar
的新变量,而变量$nameOfClass
仍然只是一个字符串。
当从一个由不止一个变量组成的表达式中形成一个变量名时,需要使用复杂(花括号)语法。以下是一个示例:
$var1 = 'hello';
$var2 = 'world';
// 使用复杂语法创建变量名
${$var1 . $var2} = 'it works!';
echo $helloworld; // 输出 'it works!'
$first_name="John";
$last_name="Doe";
$array=['first','last'];
foreach ($array as $element) {
echo ${$element.'_name'}.' ';
}
$$class
。请查看有关此非常特定情况的文档。 - inhan