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

Php 通过函数参数传递全局变量,php,globals,Php,Globals,1我知道从一开始听起来可能很傻 让我一开始就告诉你,这和你的问题不一样。在那里,asker想知道本地VAR和全球VAR的区别。这里是全局vs全局。我的问题是关于PHP处理全局变量访问和速度的内部方式 在下面的示例中,问题是函数_1是否应该比函数_2运行得更快 function function_1 ( &$global_variable_x) { //do something with $global_variable_x } function function_2 ()

1我知道从一开始听起来可能很傻

让我一开始就告诉你,这和你的问题不一样。在那里,asker想知道本地VAR和全球VAR的区别。这里是全局vs全局。我的问题是关于PHP处理全局变量访问和速度的内部方式

在下面的示例中,问题是函数_1是否应该比函数_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
}
让我强调一下有什么不同

在案例1中,您在函数参数中传递全局变量,不仅如此,您还将其作为by ref传递,以便将内存位置直接传递给PHP。由于这个技巧,在函数中不需要使用
global
关键字,而且由于这个事实,PHP没有时间在全局名称空间中查找全局。那么问题是为什么不这样做?一定要快一点,不是吗

当然,人们很容易误解这个问题,陷入日常琐事的讨论中

  • 全球化是不好的
  • 全局变量不需要通过函数args传递,因为全局变量很好。。。都是全局的,因此可以在任何地方访问它们。 最后,从语义的角度来看,通过函数参数传递一个全局变量是没有意义的,它会把人弄糊涂 所有这些都不能解决所提出的问题


    这都是关于速度的

    如果它是全局的,那么将它用作可以看到该全局的函数的参数是没有意义的。它要么1)不会更快,要么2)运行速度几乎不会慢3)运行速度几乎不会快,其原因与形式逻辑不符。

    我相信这已经得到了回答?只有在实际需要引用时,才应使用引用(
    &
    )。永远不要用它们来加速你的代码。用于加速代码的引用已经被修复,PHP现在可以自动处理这些引用。@niaccurshi不完全是这样。他们讨论的事情并不完全一样。这里的问题是局部var与全局var的实现。在我问我的问题之前,我看过那篇文章。谢谢你的推荐。@SverriM.Olsen谢谢你的评论Olsen。但是,这种改进与
    写时复制的问题有关,因为本文()很好地介绍了这一点。我的问题探讨了不同的观点。@AverageJoe啊,好吧。但无论如何,这真的值得你花时间吗?速度差很小,甚至可能无法测量。请参阅我的免责声明。使globals变慢的不是函数中的global键吗?它迫使PHP检查全局名称空间中是否存在global?如果是这样的话,那么避免使用全局键并直接从get go开始提供内存ref不是要快两倍吗?如果变量已经是全局的,那么最好使用它。如果变量是从本地传递到函数的,那么您不能以任何其他方式访问该信息。将全局变量作为参数传递给看到该全局变量的函数不会更快,因为您仍然需要获取该全局变量,除非现在您还添加了一个隐式局部变量来存储全局变量的值。当您说这个
    ,因为您仍然需要获取该全局变量时,
    ,我失去了您。我不是通过了全球参考吗?我们只是给PHP确切的内存地址?那么,要获得什么呢?已经拿到了。这正是我问题的重点。