一尘不染

PHP中全局变量和函数参数之间的优缺点?

php

抱歉,我是一个初学者,我无法确定这是一个多么好的问题,也许对你们中的某些人来说听起来很明显。

如果 我们 下面 使用 的这两个相同,哪个更好?

function doSomething ($var1,$var2,..){
    ...
}

要么

function doSomething (){
    global $var1,$var2,..;
    ...
}

通过使用,我的意思是我知道,在第二种情况下,我们还可以更改全局变量的值。但是如果我们不需要这样做,那是编写此函数的更好方法吗?传递变量比在函数中声明全局变量占用的内存少吗?


阅读 341

收藏
2020-05-29

共1个答案

一尘不染

内存使用情况很少。更重要的是,代码易于遵循且不会产生意外的结果。从这个角度来看,添加全局变量是一个非常糟糕的想法,IMO。

如果您担心内存使用情况,那么要做的是

function doSomething (&$var1, &$var2,..) {
   ...
}

这将通过引用传递变量,并且不会在内存中创建它们的新副本。如果在函数执行期间修改它们,则这些修改将在执行返回给调用者时反映出来。

但是,请注意,出于内存原因,即使这样做也是非常不寻常的。使用按引用的通常原因是我上面列出的原因(为调用者修改它们)。走的路几乎总是很简单

function doSomething ($var1, $var2) {
    ...
}
2020-05-29