PHP OOP - Php对象扩展Mysql对象=多个Mysql连接?

时间:2012-01-31 01:24:09

标签: php mysql oop class

我目前正在开发购物车,我在其中使用自定义Mysql类向db发送查询。

在这个项目中,我计划为我将使用的每个Object扩展这个Mysql类:Category,Product,Shopping Cart。

如果我创建一个类似这样的类:

class Catalog_Categories extends Mysql{}

然后是另一个这样的人:

class Catalog_Products extends Mysql{}

这些类是使用相同的Mysql对象在数据库上连接还是使用2个独立的连接?

我有点失落。

谢谢!

卡尔。

3 个答案:

答案 0 :(得分:2)

这取决于你的Mysql类是如何编写的。如果使用Singleton模式编写它,它将维护一个数据库实例。您可以将其编写为Factory模式,并为每个使用它的对象生成一个新实例。还有许多其他模式和可能性,因此它们只取决于您希望它如何工作以及您如何编写自定义Mysql类。

答案 1 :(得分:1)

假设您在Mysql类中创建数据库连接,每个对象您创建的任何扩展类,都将创建一个新的数据库连接。

有几种方法可以避免这种情况,例如,您可以创建一个与数据库的全局连接,并将该连接传递给类的构造函数,以便它们都将使用相同的连接。

答案 2 :(得分:1)

  

这些类是使用相同的Mysql对象在数据库上连接还是使用2个独立的连接?

在看到完整的代码之前,我们无法回答这个问题。

但在这种情况下扩展看起来是个坏主意。如果你不能说class A is a class B - 那么你应该更喜欢作文而不是继承。这意味着Catalog_Products应该引用mysql对象,但不应扩展它。

为了让您了解继承是否合理的是class mysql extends database。在这种情况下,你可以说“mysql是一个数据库”,所以只要database类封装了公共逻辑,这里的扩展看起来是合理的,而mysql类代表更详细的细节