PHP有好的对象关系映射库吗?

我知道PDO/ADO,但它们似乎只提供了数据库供应商之间差异的抽象,而不是域模型和关系模型之间的实际映射。我正在寻找一个PHP库,功能类似于Hibernate为Java和NHibernate为。net所做的方式。


当前回答

好的只有两个:Doctrine和Propel。我们喜欢Doctrine,它和Symfony配合得很好。然而,如果你正在寻找数据库支持之外的主要,你将不得不编写自己的代码。

其他回答

我目前正在开发phpDataMapper,这是一个ORM,它的语法很简单,就像Ruby的Datamapper项目一样。虽然它仍处于早期开发阶段,但效果非常好。

试试PHP ADOdb吧。

我不能说它是最好的,因为我没有用过其他的。但是它很快,它支持Memcached和缓存。

而且它比Zend Framework的DB/Select快多了。

如果您正在寻找一个实现数据映射器范式(而不是专门实现活动记录)的ORM,那么我强烈建议您考虑一下GacelaPHP。

Gacela特点:

数据映射器 外键映射 关联映射 依赖映射 具体表继承 查询对象 元数据映射 懒惰和急于装载 完全支持Memcached

其他ORM解决方案在开发任何远程复杂的东西时都过于臃肿或具有繁重的限制。通过实现数据映射器模式,Gacela解决了活动记录方法的局限性,同时通过在与数据库和Memcached的所有交互中使用PDO将膨胀保持在最低限度。

Doctrine2试试。它可能是最强大的PHP ORM工具。我把它和教义一分开提,因为它是完全不同的软件。它是从头重写的,仍然处于测试阶段,但现在已经可以使用了。

这是一个非常复杂的ORM,但设计得很好。第一条教义中的很多魔法都消失了。它提供了一个完整的解决方案,您可以在Doctrine2的基础上编写自己的ORM,也可以只使用其中的一个层。

检查出口ORM。它比Propel和Doctrine更简单,它的工作原理类似于Hibernate,只是它有更多的PHP感觉。