3

我创建了一个扩展标准 PDO类 ( ) 的类(称为DBPDO),以便拥有 PDO 附带的所有方法和属性,并增加对查询的更多控制(即开发时的分析等... ) 以及允许在编码查询时加快工作的方法。class DBPDO extends PDO {}

我想改进这门课。我正在考虑在整个网站上创建的所有连接,其中大多数都是在不同范围内创建以执行独立查询。所以我想知道:为什么我必须创建 ie. 我的应用程序的 5 个不同方法/类/函数上的 5 个连接,什么时候可以在所有这些上使用相同的连接?

我不想使用持久连接(例如阅读在 PDO 中使用持久连接的缺点是什么)。

我只想有一个类——当实例化时——给我一个已经活跃的连接(如果存在),或者给我一个新的连接。
但是,有一个问题。如果我必须访问查询的结果并在每个结果处执行另一个查询怎么办?我必然需要两个不同的连接。因此,如果我想要一个全新的连接还是旧的连接,我需要告诉这个新班级。

我正在考虑编写一个PDOConn带有静态方法getConnection($forceNew = false) {}和静态私有属性的新类$Connections = array()

当我需要连接时,我会写:

$dbh = PDOConn::getConnection();

PDOConn 将查看是否$Connections已经包含至少一个连接(以我已经工作的DBPDO类的实例的形式)并返回该对象。如果$Connections为空,它将创建一个新对象(的实例DBPDO),将该对象添加到$Connections并返回它。

如果我想强制创建一个新连接,我会写:

$dbh = PDOConn::getConnection(true);

因此它将创建一个新连接并将其添加到$Connections. 当在getConnection不强制创建新的情况下再次调用时,PDOConn将返回第一个创建的连接(或者可能是最后一个?)。

问题
你认为这是一个好方法,一个好主意吗?你有更好的建议吗?最重要的是:您是否认为我在课堂功能中没有考虑PDOConn到可能会导致我现在无法解决的问题?你认为写这样的类值得管理 PDO 连接吗?我的意思是,我开始这个线程是因为我想在不需要创建新连接时重用连接:这是否值得/相关,或者我可以继续创建我想要的连接数量,没关系?

谢谢你。

4

0 回答 0