我正在设计一个Web应用程序(实际上,这是一个爱好,我正在尝试自学设计,还有什么比做它更好的方式:)。无论如何,我在考虑如何处理我的数据库。我对PDO很满意,我想在我的抽象类中利用PDO。我正在考虑制作单例,因此只有一个数据库连接。这个单例将创建一个PDO连接。
在那之后,我不明白为什么我需要做太多其他事情。然后我可以使用数据库处理程序来调用PDO函数。我可能想要一些辅助函数,但是当它归结为它时,我只会将PDO用于实际的SQL查询。
这种方法有问题吗?与我使用的抽象类相比,这似乎过于简单。
答案 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上引入了两个附加功能:使用__callStatic
(DB::query()
代替DB::instance()->query()
)访问(懒惰)PDO实例,并使用两个函数轻松引用({{1} })。也许你想看看两者,它真的很方便;)
答案 3 :(得分:1)
您可能也对项目php-pdo-wrapper-class感兴趣。它是一个轻量级的数据库类,它扩展了PDO,添加了几个方法 - 插入,更新,删除,选择(和其他一些) - 以简化常见的SQL语句。我在开发过程中使用过这个项目,强烈推荐。