【问题标题】:PHP Database ClassPHP 数据库类
【发布时间】:2009-06-15 16:24:35
【问题描述】:

最好使用预先创建的类/api进行数据库交互(例如Pear MDB2或php的PDO)还是自己创建?

我将只使用带有 1 个数据库的 mysql,并执行相对简单的 SELECT、INSERT、UPDATE、DELETE 查询。

【问题讨论】:

    标签: php mysql database class


    【解决方案1】:

    对于小型个人项目,我更喜欢使用我自己的 DB 接口类而不是预构建的,但其他人发誓要使用预构建的 API。通过创建自己的课程,几乎可以保证您正在重新发明轮子。使用预构建的 API 通常只需要您了解如何在该 API 中发出命令。如果您正在与一个程序员团队合作,我建议使用一个有据可查的 API 并将其使用纳入您的最佳实践和程序。根据我的经验,我觉得团队编程和自制的 DB 类不能很好地混合。

    我要说的一件事,如果你从来没有写过这样的课程,我建议你这样做作为一个学习机会,只是为了获得一些幕后理解。在调试其他使用我不熟悉的 API 的程序员所做的工作时,我从编写自己的类中获得的经验无疑对我有很多帮助。

    [编辑 - 修正了一些非常糟糕的语法]

    【讨论】:

    • +1 有时重新发明轮子是了解轮子如何工作的好方法!当然,在大多数情况下,如果您已经有一个可以利用的好库,那就去吧;但从教育的角度来看,你很可能会从自己的滚动中学到很多东西(尤其是从你的错误中)。不过,我会选择自己的项目进行此类实验。
    【解决方案2】:

    我两者都做了——为了可维护性,使用预先创建的类可能是最好的,因为在不同的数据库后端切换通常很容易。不过,我喜欢我自己的数据库类的易用性,所以对于我的个人项目,我通常自己编写。

    除非我愿意支持,否则我不会为外部工作编写自己的 - 请记住,如果您自己编写并且客户想要更改数据库,那么您将成为接到电话的人写一个扩展。

    【讨论】:

      【解决方案3】:

      有许多用于通用 RDBMS 的优质 API,除非您有这些 API 未实现的特定要求,否则使用这些 API 通常是个好主意。一个好的经验法则是不要重新发明轮子,而是在必要时扩展它。

      Zend 框架有许多可用的 RDBMS API 并且非常流行。该框架的设计使您不需要使用整个框架。您只需要使用 include 语句在代码中包含必要的类。

      【讨论】:

        【解决方案4】:

        对于像数据库交互这样重要的事情,我会使用 PDO 或 mysqli 等预制解决方案。当您需要的一切都已经创建时,为什么还要费尽心思重写数据库访问类呢?如果您需要未包含的功能,您可以随时扩展它。

        【讨论】:

          【解决方案5】:

          根据您的情况,绝对可以直接使用 PDO 或 mysqli。

          我使用 DB 抽象层的唯一原因是,如果您打算编写必须在多个 RDBM 上运行的可分发软件。

          如果您知道您的目标(仅 mysql)并且您要编写一个您管理的应用程序,请完全跳过 db 抽象层。当你最终遇到需要切换的情况时,你通常不得不重写很多查询(除非你使用完美的标准 SQL,这在所有地方都得到了支持..)。

          重构是关键,抽象可能会使事情过于复杂。

          【讨论】:

            【解决方案6】:

            我不是框架的忠实粉丝,但它们确实提供了一些好处。在工作中,我们使用 Zend Framework (Zend_DB) 进行数据库连接。我看到使用该框架至少有两个好处:

            1. 在 Zend_DB 之上轻松实现 Zend_Cache。
            2. 易于使用 Zend 日志记录 API 将 SQL 查询记录到 FirePHP(包括准备好的查询和查询运行时间)。

            这两个功能可能非常有用。

            【讨论】:

              猜你喜欢
              • 2011-08-01
              • 1970-01-01
              • 2023-01-30
              • 2011-03-14
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2017-02-05
              • 1970-01-01
              相关资源
              最近更新 更多