我在php中看到了变量变量的概念。 这是一个名称包含在另一个变量中的变量。
像这样$name = ’foo’;
$$name = ’bar’;
echo $foo;
// Displays ’bar’
我看到的一个优点是,您可以使用您无法正常使用的数字或字母创建变量名称。像这样
$name = ’123’;
/* 123 is your variable name, this would normally be invalid. */
$$name = ’456’;
// Again, you assign a value
echo ${’123’};
// Finally, using curly braces you can output ’456’
你也可以调用一些这样的函数
function myFunc() {
echo ’myFunc!’;
}
$f = ’myFunc’;
$f(); // will call myFunc();
在一本书中我看到了这个
变量变量是一个非常强大的工具,应该与之一起使用 非常小心,不仅因为它们会让你的代码变得困难 了解和记录,但也因为他们的不当使用可以导致 一些重大的安全问题。
我遇到的问题是,如果在代码中使用变量变量可能会那么危险。我们为什么要使用它。并且在我的代码中使用变量变量是否有任何主要优势,如果有的话有什么优势。
答案 0 :(得分:1)
您可以在非用户输入的情况下使用它。看
function getVar($gid){
$name = "gid".$gid;
global $$name;
$var = $$name;
return $var;
}
当你有很多变量(与结束号相同的开头等等)时很有用,这可能是保存
答案 1 :(得分:1)
看看你的例子:
function myFunc() {
echo ’myFunc!’;
}
$f = ’myFunc’;
$f(); // will call myFunc();
功能强大:$f
可以动态获取值,并根据此值调用函数。
同时:如果用户被无限制地访问$f
,这可能是安全威胁
答案 2 :(得分:1)
在某些MVC框架中,他们使用它来运行一个函数,该函数将根据URL而变化:
http://www.domain.com/thecontroller/theaction
在PHP方面,他们将解析url,得到第二个段,这是函数的名称然后运行它,但是如何?他们将分配给你所提到的变量:
$toRun = 'theaction';
$toRun();
答案 3 :(得分:0)
我在C中使用了双倍甚至高音的间接指针,但从未在PHP中明确使用变量变量(但我使用了变量函数和类)。
我认为它在某种程度上让人放心,PHP中的功能比我使用的更多 - 而且我可以对我使用的构造做出明智的选择(我经常使用显式引用)。
答案 4 :(得分:0)
我在一些框架中看到的一个很好的用法是使用它们来访问,更容易,从另一个脚本作为数组传递的值:
$array['test'];
$array['other'];
$array['third_index'];
// or simply $array = array('test','other','third_index');
foreach($array as $k=>$v)
{
$$k = $v;
}
因此,您可以将$test
,$other
和$third_index
用作变量。例如,在处理视图时非常方便。