我应该将PDO对象传递给每个对象,还是为每个对象创建一个新对象?
我已经做了大部分程序编程多年,并试图围绕OOP和PDO的头。我已经开始将我写的应用程序转换为使用类而不是独立函数(这是一场噩梦,但我认为这将是值得的),并且希望使用PDO而不是常规的mysql_*
函数。我很喜欢坐在我的裤子旁边,只是随着我的走向学习,我不确定我应该如何处理PDO对象。我应该将PDO对象传递给每个对象,还是为每个对象创建一个新对象?
我知道这将是愚蠢的创建一个新的PDO对象每次我需要进行查询的时间,使叶片两种方式,我可以看到:
- 每班创建PDO对象(即每次创建一个对象时,调用一个成员函数来创建一个PDO供其使用)。
- 在我的应用程序开始处创建PDO对象,并将其传递给创建的每个对象的构造函数,并且所有对象共享该PDO对象。
这样做的最好方法是什么?
感谢您的咨询!
不要超过一个。试图管理所有数据库连接时,你会发疯。
一个好的解决方案就是使数据访问的singleton object,并通过它的静态访问器方法检索它,只要你想使用数据库。这样,你只有一个地方可以管理数据库访问和PDO。如果你想多做一点MVC,你可以把所有的SQL代码放在那里。
根据应用程序的大小,您可能希望使用Singleton来处理数据库连接。实质上,这将是一个包装数据库连接的类,并且具有一个将返回您的PDO对象的静态函数。但是,因为它是一个Singleton,它只会创建一个(假设你没有使它更复杂)。这样可以避免您不得不连续创建对象,也无需将一个对象传递给所有对象,从而将持久性与业务逻辑正确地分离。
你是什么意思,“取决于应用程序的大小”?你能详细说明一下吗? – Nate 2012-07-06 20:22:10
对于低负载特别小的应用程序而言,担心单件可能会过度。同样,较大的应用程序可能需要某种形式的池化机制,这可能会或可能不是最好的单身人士。我需要了解更多关于您的用例的知识,甚至可以开始在这方面提供建议。 – 2012-07-09 07:30:25
你一定要通过它,不要多次创建它。 – kapa 2012-07-06 15:27:23