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

标签 php function global-variables performance

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

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

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

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

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

最佳答案

内存使用是一个微不足道的问题。更重要的是代码易于遵循并且不会产生......无法预测的......结果。从这个角度来看,添加全局变量是一个非常糟糕的想法,IMO。

如果你担心内存使用,要做的是

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

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

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

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

关于php - PHP 中全局变量和函数参数之间的优点/缺点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2216340/

相关文章:

php - MySQLi 和 PDO 有什么区别?

c - 链表添加删除功能失效

c - 函数内的函数不起作用

C++ 函数总是返回相同的指针

php - 在其他方法中使用来自 __construct() 的变量

php - 如何使用 PHP 获得无限的最长执行时间?

php - ElasticSearch-全文匹配和 'fuzzy'匹配

c++ - 循环遍历 C++ 中的所有 Lua 全局变量

Javascript:全局变量不起作用。 (使用SDK.REST.retriveMultipleRecords)

php - PHP 正则表达式中的 ^$ 和 $^ 是否相同?