[英]PHP OOP - Php objects extends Mysql Object = Multiple Mysql Connection?
我目前在使用自定义Mysql类将查询发送到数据库的购物车上工作。
在该项目上,我计划为我将使用的每个对象扩展此Mysql类:类别,产品,购物车。
如果我创建一个像这样的类:
class Catalog_Categories extends Mysql{}
然后再这样一个:
class Catalog_Products extends Mysql{}
这些类是使用相同的Mysql对象在数据库上进行连接还是使用2个单独的连接?
我有点迷路了。
谢谢!
卡尔
这取决于您的Mysql类的编写方式。 如果使用Singleton模式编写它,它将维护一个数据库实例。 您可以将其编写为Factory模式,并为使用它的每个对象生成一个新实例。 还有许多其他模式和可能性可用,因此所有这些都取决于您希望它如何工作以及如何编写自定义Mysql类。
假设您正在Mysql
类中创建数据库连接,则任何扩展类创建的每个对象都将创建一个新的DB连接。
有几种方法可以避免这种情况,例如,您可以创建一个到数据库的全局连接,并将该连接传递给类的构造函数,以便它们都将使用同一连接。
这些类是使用相同的Mysql对象在数据库上进行连接还是使用2个单独的连接?
在看到完整的代码之前,我们无法回答此问题。
但是在这种情况下扩展似乎是个坏主意。 如果您不能说class A is a class B
-那么您应该更喜欢组合而不是继承。 这意味着Catalog_Products
应该具有对mysql
对象的引用,但不应扩展它。
为了让您有一个合理的理由继承继承是class mysql extends database
。 在这种情况下,您可以说“ mysql是数据库”,因此,只要database
类封装了通用逻辑,并且mysql
类代表更详细的细节,此处的扩展看起来就很合理。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.