通过函数参数传递全局变量

时间:2013-02-28 00:08:29

标签: php globals

1我知道这可能听起来很傻......

让我告诉你,这与The advantage / disadvantage between global variables and function parameters in PHP. asked right here on stackoverflow不同。在那里,提问者想知道当地的变种与全球变量。这里,全局与全局。我的问题是关于PHP处理全局变量访问和速度的内部方式。

以下示例中的问题是,function_1应该比function_2运行得更快?

function function_1 ( &$global_variable_x) {
    //do something with $global_variable_x
}



function function_2 () {
    global $global_variable_x;
    //do something with $global_variable_x
}

让我强调一下有什么不同......

在第一种情况下,你在函数参数中传递全局,不仅如此,你通过ref传递它,所以内存位置直接传递给PHP。由于这个技巧,不需要在函数中使用global关键字,并且由于这个事实,PHP没有花时间在全局名称空间中查找全局。那么问题是为什么不这样做呢?它必须更快,不是吗?

当然,很容易误解这个问题并进入常见的谈论琐事

  1. Globals很糟糕
  2. 全局变量不需要通过函数args传递,因为全局变量......是全局变量,所以无论如何它们都可以被访问。 最后,从语义的角度来看,通过函数参数传递全局是没有意义的,它会让人们感到困惑。
  3. 没有一个解决被问到的问题。

    一切都与速度有关。

1 个答案:

答案 0 :(得分:0)

如果它的全局性,将它用作可以看到全局的函数的参数是没有意义的。它要么1)不会更快,要么2)它的运行速度会慢得多3)它的运行速度会很快,而且其原因会违反形式逻辑。