我应该将PDO对象传递给每个对象,还是为每个对象创建一个新对象?

时间:2012-07-06 15:23:52

标签: php mysql oop pdo

我已经完成了多年的程序编程,并试图围绕OOP和PDO。我已经开始将我编写的应用程序转换为使用类而不是独立函数(这是一场噩梦,但我认为值得......)并且希望使用PDO而不是常规的mysql_*函数。我有点坐在裤子的座位上,只是随着我的学习而学习,我不知道应该如何处理PDO对象。

我知道每次需要进行查询时创建一个新的PDO对象都是愚蠢的,所以我可以看到两种方式:

  1. 在每个类中创建一个PDO对象(即每次创建一个对象时,调用一个成员函数来创建一个PDO供它使用)。
  2. 在我的应用程序的开头创建PDO对象,并将其传递给每个创建的对象的构造函数,并且所有对象共享PDO对象。
  3. 这样做的最佳方式是什么?

    感谢您的建议!

2 个答案:

答案 0 :(得分:2)

不要多于一个。你会疯狂地试图管理所有数据库连接。

一个好的解决方案是使用singleton object进行数据访问,并在需要使用数据库时通过它的静态访问器方法检索它。这样,您只有一个管理数据库访问和PDO的地方。如果你想要更多MVC,你可以将所有SQL代码放在那里。

答案 1 :(得分:1)

根据应用程序的大小,您可能希望使用Singleton来处理数据库连接。从本质上讲,这将是一个包装数据库连接的类,并具有一个将返回PDO对象的静态函数。但是,因为它是一个单身人士,它只会创建一个(假设你没有让它变得更复杂)。这样既可以不必连续创建对象,又可以将一个对象传递给所有对象,从而将持久性与业务逻辑正确分离。