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

PHP中的Mysqli资源作为参数或全局,php,mysql,function,mysqli,Php,Mysql,Function,Mysqli,哪种方法更好地将MySQLi资源传递给页面上的函数?按值作为参数?作为参考参数?让它全球化 我已经想了一段时间了,我不知道哪一个更好,也不知道该怎么看 提前感谢大多数人建议的模式是通过参数的函数传递它,或者如果您是以面向对象的方式编码,则使用依赖项注入 Globals通常被认为是一种不好的做法,因为它使读取代码和检测依赖项变得困难 你应该知道还有另一种选择,但这一直是网络批评的主题:单例设计模式。最大的问题是: 基本上是一种引入全局变量(实例)的技巧,因此从全局变量继承问题 与单一责任原则背道

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

我已经想了一段时间了,我不知道哪一个更好,也不知道该怎么看


提前感谢

大多数人建议的模式是通过参数的函数传递它,或者如果您是以面向对象的方式编码,则使用依赖项注入

Globals通常被认为是一种不好的做法,因为它使读取代码和检测依赖项变得困难

你应该知道还有另一种选择,但这一直是网络批评的主题:单例设计模式。最大的问题是:

  • 基本上是一种引入全局变量(实例)的技巧,因此从全局变量继承问题
  • 与单一责任原则背道而驰
  • 隐藏程序的依赖项
  • 很难进行单元测试
在这里您可以找到一些参考资料:


    • 当然是全球性的。

      你将用无用的额外参数污染你的代码,而这一切都是徒劳的。
      看,大多数人只是把一些规则背下来,然后无条件地遵守它们。但更好的方法是理解它们的含义并明智地使用它们,这取决于上下文

      把猫叫做猫没有什么错。但将全局变量称为全局变量并没有错。
      虽然“全球化通常被认为是一种不好的做法”,但这种情况有所不同。
      当您使用
      global
      关键字传递局部变量时,这确实是一种糟糕的做法。它使您的代码变得晦涩难懂,难以支持—我不是在争论这一点。 但真正的全局变量是完全不同的事情。PHP一直在使用它们—一个
      $\u服务器
      数组就是一个完美的例子


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

      不要使用全局变量。永远不会。它们不安全吗?或者他们有什么问题?他们可能无法治愈。但我(和大多数其他人)的问题是,它们如何使代码变得很难阅读/理解。所以,请尽量避免它们。当将ressource传递给函数时,PHP总是通过引用传递它(通过值传递它没有任何意义),因此您不必强制通过引用传递它。然后,我会习惯于通过参数传递mysqli资源,并避免全局变量。我只是想知道一些意见,从我的第一个“大”项目开始。谢谢