【发布时间】:2011-12-10 02:34:08
【问题描述】:
到目前为止,在我们可以善意重复使用的任何开源项目下开发的最好的 PHP DAL(数据抽象层)是什么?
我发现很难为我的应用程序选择一个充分支持对大多数常见数据库系统(MySQL、PostgreSQL、MSSQL、Oracle 等)的抽象的 DAL,并且是:
- 经过广泛测试,
- 具有良好的界面(可读的方法名称,良好的参数传递策略),
- 快,
- 轻量级,
- 提供缓存(例如与 Memcache 集成或支持良好的缓存机制),
- 开源许可证,
- 至少应该有适用于 MySQL/MySQLi(非 PDO)的适配器
需要考虑的一些库:
- PHPBB DAL http://wiki.phpbb.com/Database_Abstraction_Layer
- Joomla DAL http://api.joomla.org/Joomla-Framework/Database/JDatabase.html
- ADOdb http://phplens.com/adodb/
- Zend_db
- Doctrine(下行仅支持 PDO_*)
- 在任何开源项目/分支下使用/开发的任何其他 DAL
请不要考虑:
- PDO
- 所有 ORM(不过,Doctrine 似乎除了 ORM 之外还有一个单独的 DAL)
【问题讨论】:
-
@DrColossos,请查看我的编辑。我认为 ORM 在我的情况下对于 php 来说是太多的 OOP。我只需要出于上面列出的原因/功能的良好抽象,谢谢
-
您能否解释一下为什么您认为面向对象的 DAL 不能成为解决方案?难道你不认为你的 DAL 列表没有维护并且缺少很多东西只是因为他们不使用 OOP 吗?我不知道今天有哪个认真的程序员会构建一个好的 DAL 并拒绝 OOP。检查 Zend_Db_Table(不仅是 Zend_Db)。
-
@regilero 我并没有说我不喜欢基于 OOP 的 DAL。当我说没有 ORM 时,你没有得到我的问题。当我们希望业务对象与数据库表耦合时,严格使用 ORM ..例如 Active Record 就是一个例子。我对业务对象+数据库耦合不感兴趣。我只想要一个没有 ORM(对象关系映射)部分的好 DAL。如果您有其他库建议您欢迎
-
我只是好奇,为什么要排除 PDO ?这是一个非常好的系统,如果遵循路线图计划,它应该成为PHP官方默认的数据库机制(mysql_将被驱逐到PECL,mysqli_也将被驱逐)
-
我也不理解 PDO 的仇恨。你能提供理由吗?
标签: php database database-abstraction