PHP中的Mysqli资源作为参数或全局

时间:2013-02-09 23:00:32

标签: php mysql function mysqli

哪种方法最好将MySQLi资源传递给页面上的函数?作为参数值?作为参考参考?使它全球化?

我一直在思考这个问题,我不知道哪个更好或者怎么看。

提前致谢

2 个答案:

答案 0 :(得分:1)

大多数人建议的模式是通过参数函数传递它,或者如果你正在编写OOP方式,则使用依赖注入。

全局通常被认为是一种不好的做法,因为它们使得难以阅读代码并检测依赖性。

您应该知道还有其他选择,但一直是网络批评的主题:Singleton设计模式。最大的问题是:

  • 基本上是一个引入全局变量(实例)的hack,因此继承了全局变量中的问题。
  • 违反单一责任原则。
  • 隐藏程序的依赖
  • 难以进行单元测试

您可以在这里找到一些参考资料:

答案 1 :(得分:0)

全球肯定。

您将无用的额外参数污染您的代码 看,大多数人只是习惯性地学习一些规则,并无条件地遵循它们。但最好理解它们的含义并明智地使用 ,这取决于上下文。

把猫叫做猫是没有错的。然而,将全局变量称为全局变量并没有错。
虽然“全局性通常被认为是一种不良做法”,但这种情况不同 当您使用global关键字传递本地变量时,这确实是一种不好的做法。它使你的代码模糊不清,难以支持 - 我不是在争论。 但真正的全球变量是一个完全不同的问题。 PHP正在使用它们 - $_SERVER数组就是一个很好的例子。

因此,对于一个真正的全局变量,它在整个代码中一直使用并成为文档化API的一部分 - global是最佳选择。