关于PHP类中数据库连接的建议

时间:2012-06-13 16:16:17

标签: php database oop class

我正在玩OOP编程,并遇到了障碍我可以使用建议。

我遇到过嵌套类的情况。我有一个“公司”类,其中包含一个名为people的数组。该数组包含许多“Person”类的实例。

“公司”和“人”的数据都存储在数据库中,相关的类会在需要时从该数据库中检索信息。

我的问题非常简单:“我在什么时候连接到数据库?”我是: -     a)首先在我的PHP页面中连接,然后将连接传递给“Company”实例以供其使用。     b)将用户名,密码等直接放在“公司”类中并连接到那里。

我原以为后者会创建多个与数据库的连接 - 每个“公司”实例一个 - 所以答案可能是“A”。但是,如果我要将课程传递给另一个开发人员(这只是一个学习练习,所以不是我打算做的事情),他必须自己连接到数据库,而不允许我的班级为他做这件事。

在任何一种情况下,是否会自动将连接传递给“Person”类的每个实例,或者每次创建新实例时都必须传递连接?

我已经对此做了一些研究,我认为答案是“A”(在我的PHP页面连接到数据库,并将连接传递给Company类的每个实例),但只是想我应该仔细检查在我走得太远之前。

感谢您提供的任何建议。

2 个答案:

答案 0 :(得分:1)

你的解决方案A)听起来很熟悉。这样你就可以将数据库连接传递给对象,或者维护一个全局注册表来存储连接对象(例如PDO)。

答案 1 :(得分:0)

我认为你走在正确的轨道上。

您所描述的内容称为dependency injection,使用它通常是一个好主意。

当您处理更复杂的项目时,完全抽象数据检索可能是个好主意。创建一个界面,即“PersonFinder”或“CompanyFinder”,仅处理其相关记录的查找和检索。此接口的具体实现可能包括数据库查找,CSV文件查找,甚至某种基于Web的服务查找。在创建时将Finder传递给公司或人物对象。

通过这种方式,您可以轻松更改查找记录的方式,而无需更改处理这些记录的代码。