首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP或$GLOBALS

PHP或$GLOBALS
EN

Stack Overflow用户
提问于 2010-08-26 09:39:17
回答 4查看 46.7K关注 0票数 51

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

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

谢谢。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-08-26 09:44:04

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

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

代码语言:javascript
复制
function myFunc(&$myVar)
{
    $myVar = 10;
}

$foo = 0;
myFunc($foo);
var_dump($foo); // yields 10
票数 32
EN

Stack Overflow用户

发布于 2010-08-26 10:16:54

那么,你只应该在有限的情况下使用全球值,但是要回答你的问题:

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

关于第1点和第2点,我将在这里报价萨拉·戈勒蒙:

这对您使用$GLOBALS数组意味着什么?没错,global关键字在技术上更快。现在,我想澄清一件事。将全局变量用作本地化编译变量所提供的较小的速度性能需要与五年内查看代码并知道$foo来自全局范围的可维护性进行认真权衡。something_using($GLOBALS['foo']);对你来说永远比global $foo; /* buncha code */ something_using($foo);更清楚--不要吝啬和愚昧。

票数 83
EN

Stack Overflow用户

发布于 2010-08-26 09:40:44

在函数顶部使用global。这样,您就可以很容易地看到所使用的全局词。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3573847

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档