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

dsc*_*her 8 php scope database-connection

我有一个单一的数据库连接,我得到:

$ dbConnect = myDatabase :: getInstance();

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

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

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

$ result = myDatabase :: getInstance() - > query($ query);

从一个函数直接?

zaf*_*zaf 0

我使用超级全局 $GLOBALS 变量来保存我的数据库连接。创造奇迹。

具有您提到的所有优点,并且只要您明智并为哈希数组使用唯一的键并且仅使用一个入口函数来设置数据库连接并将其存储在数组中,那么它绝对没有任何错误或不合适。

我现在就戴上耳塞,准备好接受有关使用全局变量的所有抱怨!

@Downvoters - 一些睡前读物:

全局变量不好吗?

/sf/ask/25003121/

摘录几句供大家娱乐:

全局变量一直被很多很多程序员使用。我们现在称它们为单例。 ” - DannySmurf

他们完全、从根本上、绝对、令人难以置信、令人震惊地邪恶。 ”—— Vinko Vrsalovic

最好的答案来自 cletus 本人: Ares global Variables in PHP被认为是不好的做法吗?如果是这样,为什么?