在函数和多个脚本(PHP)中使用单例数据库类 – 最佳使用方法

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了在函数和多个脚本(PHP)中使用单例数据库类 – 最佳使用方法脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个单一的数据库连接,我得到:

这很容易.我的问题是在函数和类中使用此连接的最少修辞和合法方式是什么?将变量声明为global,将其传递给每个函数,和/或在每个函数中重新创建此变量似乎很愚蠢.还有另一个答案吗?

显然我是一个菜鸟,我可以用10种不同的方式解决这个问题,其中没有一个对我很有吸引力.如果我可以在任何函数中访问$dbConnect变量而不需要将其声明为全局或传入它,那将会容易得多.我知道我可以将变量添加到$_SERVER数组中…是否有问题这样做?这似乎有点不合适.

一个快速问题:这样做是不好的做法:

一个函数直接?

其中一些将归结为品味.在工作中,我们还通过获取ADODB连接句柄
$db = Registry :: getDB();

同样,您可以使用方法链接来缩写部分代码

$name = Registry :: getDB()->getOne(
    "SELECT name From user WHERE user_id = ?",$userId
);

使用注册表意味着您的调用代码具有对Registry类的具体依赖性.这使得测试代码变得困难(个人而言,这是我唯一一次使用注册表将我的头撞到墙上).

如果您希望代码add unit tests,则通常需要模拟数据库连接,这样每次运行测试套件时都不会操作数据库.

您仍然可以通过检查运行环境并使用模拟数据库抽象类配置注册表来解决这个问题,但它并不像依赖注入(DI)那样优雅.

我见过的DI和容器(对于PHP开发人员)的最佳解释是Fabien Potencier’s Dependency Injection with PHP 5.3(从幻灯片9开始).

你传递一个DI容器来代替一个注册表,它提供了一种优雅而简单方法获取依赖项的句柄(比如注册表),但它是灵活的,并且更加松散耦合,因此你可以在需要时模拟这些依赖项.

脚本宝典总结

以上是脚本宝典为你收集整理的在函数和多个脚本(PHP)中使用单例数据库类 – 最佳使用方法全部内容,希望文章能够帮你解决在函数和多个脚本(PHP)中使用单例数据库类 – 最佳使用方法所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。