在php中使用变量变量的主要优点是什么?

时间:2011-08-02 08:11:36

标签: php variables

  

可能重复:
  What's an actual use of variable variables?

我在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();

在一本书中我看到了这个

  

变量变量是一个非常强大的工具,应该与之一起使用   非常小心,不仅因为它们会让你的代码变得困难   了解和记录,但也因为他们的不当使用可以导致   一些重大的安全问题。

我遇到的问题是,如果在代码中使用变量变量可能会那么危险。我们为什么要使用它。并且在我的代码中使用变量变量是否有任何主要优势,如果有的话有什么优势。

5 个答案:

答案 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用作变量。例如,在处理视图时非常方便。