【发布时间】:2009-06-15 16:24:35
【问题描述】:
最好使用预先创建的类/api进行数据库交互(例如Pear MDB2或php的PDO)还是自己创建?
我将只使用带有 1 个数据库的 mysql,并执行相对简单的 SELECT、INSERT、UPDATE、DELETE 查询。
【问题讨论】:
最好使用预先创建的类/api进行数据库交互(例如Pear MDB2或php的PDO)还是自己创建?
我将只使用带有 1 个数据库的 mysql,并执行相对简单的 SELECT、INSERT、UPDATE、DELETE 查询。
【问题讨论】:
对于小型个人项目,我更喜欢使用我自己的 DB 接口类而不是预构建的,但其他人发誓要使用预构建的 API。通过创建自己的课程,几乎可以保证您正在重新发明轮子。使用预构建的 API 通常只需要您了解如何在该 API 中发出命令。如果您正在与一个程序员团队合作,我建议使用一个有据可查的 API 并将其使用纳入您的最佳实践和程序。根据我的经验,我觉得团队编程和自制的 DB 类不能很好地混合。
我要说的一件事,如果你从来没有写过这样的课程,我建议你这样做作为一个学习机会,只是为了获得一些幕后理解。在调试其他使用我不熟悉的 API 的程序员所做的工作时,我从编写自己的类中获得的经验无疑对我有很多帮助。
[编辑 - 修正了一些非常糟糕的语法]
【讨论】:
我两者都做了——为了可维护性,使用预先创建的类可能是最好的,因为在不同的数据库后端切换通常很容易。不过,我喜欢我自己的数据库类的易用性,所以对于我的个人项目,我通常自己编写。
除非我愿意支持,否则我不会为外部工作编写自己的 - 请记住,如果您自己编写并且客户想要更改数据库,那么您将成为接到电话的人写一个扩展。
【讨论】:
有许多用于通用 RDBMS 的优质 API,除非您有这些 API 未实现的特定要求,否则使用这些 API 通常是个好主意。一个好的经验法则是不要重新发明轮子,而是在必要时扩展它。
Zend 框架有许多可用的 RDBMS API 并且非常流行。该框架的设计使您不需要使用整个框架。您只需要使用 include 语句在代码中包含必要的类。
【讨论】:
对于像数据库交互这样重要的事情,我会使用 PDO 或 mysqli 等预制解决方案。当您需要的一切都已经创建时,为什么还要费尽心思重写数据库访问类呢?如果您需要未包含的功能,您可以随时扩展它。
【讨论】:
根据您的情况,绝对可以直接使用 PDO 或 mysqli。
我使用 DB 抽象层的唯一原因是,如果您打算编写必须在多个 RDBM 上运行的可分发软件。
如果您知道您的目标(仅 mysql)并且您要编写一个您管理的应用程序,请完全跳过 db 抽象层。当你最终遇到需要切换的情况时,你通常不得不重写很多查询(除非你使用完美的标准 SQL,这在所有地方都得到了支持..)。
重构是关键,抽象可能会使事情过于复杂。
【讨论】:
我不是框架的忠实粉丝,但它们确实提供了一些好处。在工作中,我们使用 Zend Framework (Zend_DB) 进行数据库连接。我看到使用该框架至少有两个好处:
这两个功能可能非常有用。
【讨论】: