【问题标题】:Mysqli resource in PHP as a parameter or globalPHP中的Mysqli资源作为参数或全局
【发布时间】:2013-01-25 09:37:43
【问题描述】:

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

我一直在考虑这个问题,但我不知道哪个更好或如何看待它。

提前致谢

【问题讨论】:

  • 不要使用全局变量。永远。
  • 它们不安全吗?或者他们有什么问题?
  • 它们可能不安全。但是我(和大多数其他人)对它们的问题是它们如何使代码非常难以阅读/理解。所以请尽量避免它们。
  • 而且当将资源传递给函数时,PHP 总是通过引用传递(按值传递没有意义),所以不必强制通过引用传递。

标签: php mysql function mysqli


【解决方案1】:

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

全局变量通常被认为是一种不好的做法,因为它们使阅读代码和检测依赖关系变得困难。

知道还有另一种选择是正确的,但它一直是网络上批评的主题:单例设计模式。最大的问题是:

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

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

【讨论】:

  • 然后,我将习惯于通过参数传递 mysqli 资源并避免使用全局变量。我只是想知道意见,从我的第一个“大”项目开始。谢谢
【解决方案2】:

肯定是全球性的。

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

称猫为猫并没有错。然而,将全局变量称为全局变量并没有错。
尽管“全局变量通常被认为是一种不好的做法”,但这种情况是不同的。
当您使用 global 关键字传递 local 变量时,这确实是一种不好的做法。它使您的代码晦涩难懂且难以支持-我不是在争论这一点。 但是真正的 global 变量是完全不同的事情。 PHP 一直在使用它们——$_SERVER 数组就是一个完美的例子。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-01
    • 2020-11-20
    • 2011-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多