PHP - 关于在函数之外指定具有全局范围的变量的问题

时间:2011-01-11 18:28:05

标签: php global-variables

据我所知,如果你在一个带有'global'关键字的php函数中声明一个变量,它将引用一个在函数外声明的变量,但为什么php程序员想要在函数作用域之外声明一个变量为'global ?谢谢!

我理解这是做什么的:

<?
$a = 1;
function $boo() {
    global $a;
    echo $a;
}
?>

但我得到的是为什么我要这样做?

<?
global $a;
function $boo() {
    //foo
}
?>

3 个答案:

答案 0 :(得分:2)

它与php范围有关 如果您的文件a.php具有类似这样的类

<?
class test()
{
  function test()
  {
    include('b.php');
  }
}
?> 

和文件b.php

<?
$a = 1;
?>

然后$ a只能在function test()

的范围内访问

如果你在b.php中有global $a,那么$ a就会变成一个全局变量

这是关于它的php文档:http://php.net/manual/en/function.include.php

答案 1 :(得分:0)

我不知道你为什么要那样做。对于所有意图和目的(除非我非常非常错误),这与以下内容完全相同:

<?
var $a;
function $boo() {
  // foo
}
?>

反过来与

完全相同
<?
function $boo() {
  // foo
}
?>

因为您通常不必在PHP中实例化变量。

非常好奇为什么你使用可变命名的函数呢? (function $boo() {}

答案 2 :(得分:0)

嗯,恕我直言,使用全局变量是一种糟糕的编程习惯。它可能会导致程序中出现意外的副作用,这些副作用难以调试,并且使维护更加困难。