使用PHP PDO的数据库抽象类设计

时间:2010-07-17 15:24:55

标签: php oop pdo database-abstraction

我正在设计一个Web应用程序(实际上,这是一个爱好,我正在尝试自学设计,还有什么比做它更好的方式:)。无论如何,我在考虑如何处理我的数据库。我对PDO很满意,我想在我的抽象类中利用PDO。我正在考虑制作单例,因此只有一个数据库连接。这个单例将创建一个PDO连接。

在那之后,我不明白为什么我需要做太多其他事情。然后我可以使用数据库处理程序来调用PDO函数。我可能想要一些辅助函数,但是当它归结为它时,我只会将PDO用于实际的SQL查询。

这种方法有问题吗?与我使用的抽象类相比,这似乎过于简单。

4 个答案:

答案 0 :(得分:5)

你不需要单身人士。

数据库Singleton不会解决任何并发问题。如果有的话,它可以确保您在中创建的请求只有一个PDO实例。它提供了全球访问,许多人认为这是一件坏事。另外you have to make some extra effort when testing the Singleton

在引导程序中需要时只需create a wrapper that lazy connects and stores the instance,并将实例设置为DAL supertype,例如TableDataGateway。此外,这样您就不会仅限于一个PDO实例,以防您在某个时刻需要第二个PDO实例。

答案 1 :(得分:3)

对你来说,这似乎很简单,因为PDO本质上是一个数据库抽象类。这意味着:工作已经完成。

答案 2 :(得分:2)

是的,这是一个好的开始。 PDO +单身是一种经常使用的组合。因为我个人不喜欢所有涉及的打字而不是使用单身人士,所以我写了a very lightweight database class

它仅在PDO上引入了两个附加功能:使用__callStaticDB::query()代替DB::instance()->query())访问(懒惰)PDO实例,并使用两个函数轻松引用({{1} })。也许你想看看两者,它真的很方便;)

答案 3 :(得分:1)

您可能也对项目php-pdo-wrapper-class感兴趣。它是一个轻量级的数据库类,它扩展了PDO,添加了几个方法 - 插入,更新,删除,选择(和其他一些) - 以简化常见的SQL语句。我在开发过程中使用过这个项目,强烈推荐。