2009-06-15 81 views
2

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

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

回答

5

对于小型个人项目,我更喜欢使用我自己的DB接口类来预先构建,但其他人会以预构建的API发誓。通过创建自己的班级,你几乎可以保证重新发明轮子。使用预先构建的API通常只需要您学习如何在该API中发布命令。如果您正在与一个程序员团队合作,我建议您使用记录完善的API,并将其用于您的最佳实践和程序。根据我的经验,我认为团队编程和自制的数据库课程混合不好。

我会说的一件事,如果你从来没有写过这样的课,我建议这样做只是为了获得一些幕后理解的学习机会。我从编写自己的课程中收集的经验对于调试其他使用我不熟悉的API的程序员完成的调试工作,已经帮助我多次。

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

+1

+1有时重新发明轮子是知道轮子是如何工作的好方法!当然,在大多数情况下,如果你已经有了你可以利用,用它去一个好的图书馆;但从教育的角度来看,你很可能从滚动你自己(尤其是从你的错误)中学到很多东西。不过,我会选择一个我自己的项目来进行这样的实验。 – 2009-06-15 18:31:17

1

我已经完成了两项工作 - 使用预先创建的类对于可维护性来说可能是最好的,因为通常很容易切换到不同的数据库后端。但是,我喜欢我自己的数据库类的易用性,所以对于我的个人项目,我通常会写我自己的。

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

1

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

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

1

对于像数据库交互一样重要的事情,我会使用PDO或mysqli等预先制定的解决方案。当你需要的所有东西都已经被创建时,为什么要经历重写数据库访问类的所有麻烦?如果你需要不包含的功能,你可以随时扩展它。

1

当然无论是使用PDO或mysqli的直接您的具体情况。

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

如果你知道你的目标(只是mysql),并且你要编写一个你管理的应用程序,那么完全跳过数据库抽象层。当你最终陷入需要切换的情况时,你总是不得不重写许多查询(除非你使用了完美的标准SQL,这在任何地方都是受到支持的。)。

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

1

我不是很喜欢框架,但他们确实提供了一些好处。在工作中,我们使用Zend Framework(Zend_DB)进行数据库连接。我发现使用该框架至少有两个好处:

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

这两个功能是非常有用的。