2011-06-07 47 views
0

这不是关于何时使用“通过参考”与“通过价值传递”的理论或一般问题。这里有几个关于这种类型的问题,其中没有人回答我非常具体的问题:PHP数据库 - 作为链接或“参考”传递给函数?

在PHP中,当将数据库连接资源ID传递给函数(只是一个简单的过程函数,而不是任何类或任何复杂的东西)如果我通过引用或按价值传递,那么问题是否重要

连接本身没有任何作用。它从未改变。所以参考和价值都很好。

我想我的问题是弄清楚为什么我会通过引用传递它。我有旧的继承代码,并且代码中的注释表明通过引用传递会节省内存并加速性能。我想知道这是否属实?

btw我正在使用Postgresql连接,而不是MySQL。

谢谢!

+0

这对于数据库来说很少(或者完全没有)。考虑重新措辞更一般。 – 2011-06-07 18:35:07

回答

2

数据库连接是一个“资源”。它通常只是一个指针,所以无论您是通过值还是通过引用来传递它都没关系。在这个意义上,资源的行为类似于对象。

通过引用传递过去曾经对内存使用量产生重大影响。这就是为什么旧代码包含如此多的&运营商。但这不再是必要的。 PHP 5为变量使用了写时复制语义,因此在大多数情况下,它不会花费更多的内存来按值传递内容。特别是如果它只是一个像资源一样的指针......但这也适用于其他类型的变量,如字符串和数组。 (尝试按值传递1MB字符串,内存消耗不会增加1MB。)

+0

完美。非常感谢kijin和jci!非常清楚。 – PKHunter 2011-06-08 18:03:52

3

在这种情况下没有区别,因为资源变量本身是指向外部脚本资源的指针。 只需通过它的价值。

您可以检查如果您使用echo $resourceVar;,PHP资源如何易于使用。
将打印类似:"Resource id #2"

2

对于大多数用途,它不会在所有问题(通常按值传递),除非你特别希望更改数据库的连接。

它的工作方式与对象相似,即使按值传递对象时,仍然可以对其进行更改,因为它是指向实际数据的指针。

所以要回答这个问题,你没有理由通过引用传递。

相关问题