PHP 全局或$GLOBALS

2022-08-30 10:28:44

当我想使用在函数外部声明的变量时,是否有最佳实践/建议:

  1. global $myVar
  2. $GLOBALS['myVar']

谢谢。


答案 1

好吧,您应该只在有限的情况下使用全局变量,但要回答您的问题:

  1. global可能稍微快一点(它很少会有所作为)。
  2. $GLOBALS(not ) 更具可读性,因为每次看到它时,您都知道您正在访问/更改全局变量。这对于避免令人讨厌的错误至关重要。$GLOBAL
  3. 在函数内部,如果要取消设置全局变量,则必须使用 ,而不是 。unset($GLOBALS['varname'])global $varname; unset($varname);

至于第1点和第2点,我在这里引用Sara Golemon的话:

这对您使用阵列意味着什么?没错,关键字在技术上更快。现在,我想在这里真正清楚一件事。使用全局变量作为本地化的[编译变量]所给出的次要速度需要与在五年内查看代码并知道其来自全局范围的可维护性进行认真权衡。 总会比不要一分钱和磅傻更清楚。$GLOBALSglobal$foosomething_using($GLOBALS['foo']);global $foo; /* buncha code */ something_using($foo);


答案 2

您真正应该做的是将变量传递给函数,而不是使用全局变量。

如何通过将变量作为引用参数传递来更改函数外部变量的示例:

function myFunc(&$myVar)
{
    $myVar = 10;
}

$foo = 0;
myFunc($foo);
var_dump($foo); // yields 10

推荐