代码之家  ›  专栏  ›  技术社区  ›  TCCV

使用php pdo的数据库抽象类设计

  •  4
  • TCCV  · 技术社区  · 14 年前

    我正在设计一个Web应用程序(实际上,这是一个爱好,我正在努力教自己设计,还有什么比设计更好的方法:)。不管怎样,我在考虑如何处理我的数据库。我觉得很舒服 PDO 我正在考虑在抽象类中利用PDO。我正在考虑创建一个单例,这样就只有一个数据库连接。这个singleton将创建一个PDO连接。

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

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

    4 回复  |  直到 10 年前
        1
  •  5
  •   Community clintgh    7 年前

    你不需要单身汉。

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

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

        2
  •  3
  •   middus    14 年前

    也许对您来说这看起来很简单,因为PDO本质上是一个数据库抽象类。意思是:工作已经完成了。

        3
  •  2
  •   Peter Mortensen nickfox    10 年前

    是的,这是个好的开始。PDO+singleton是一种常用的非常好的组合。由于我个人不喜欢所有涉及的打字,我写了 a very lightweight database class .

    它只在PDO上引入了两个附加功能:使用 __callStatic ( DB::query() 而不是 DB::instance()->query() )以及两个更容易引用的函数( DB::q('INSERT INTO table (name) VALUES (?s)', $_POST['insecure_name']) )也许你想看看两者,这真的很方便;)

        4
  •  1
  •   Peter Mortensen nickfox    10 年前

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

    推荐文章