是否值得在Zend Framework中使用Doctrine 2?

use*_*791 11 php zend-framework doctrine-orm

我知道有些用户在Zend Framework中使用Doctrine 2而不是Zend_Db.但我不知道为什么.为什么Doctrine2比Zend_Db好,为什么Zend_Db不好?

谢谢

Cob*_*bby 25

(2013年3月7日)免责声明:这个答案可能现在有点过时了.我目前还没跟上PHP社区,这种比较是在Doctrine ORM v2和Zend Framework v1之间进行的.这是苹果与橘子的比较,因为它们是两个不同的东西.


开箱即用的Zend_Db更像是PDO之上的增强型数据库抽象层,其中Doctrine 2是一个对象关系映射器(位于它自己的DBAL之上).

对于更复杂的域层,Doctrine 2更好,因为所有业务逻辑,持久性逻辑等都是在多个类之间分离的,因此它们不能为多个角色提供服务.此外,因为你有更多的类 - 更清晰和松散耦合 - 它使测试更容易.

此外,您将只编写使用Zend_Db的SQL的一小部分,因为您可以操纵实体对象,而Doctrine会将这些更改转换为数据库.生成的SQL还利用了可以获得不错性能的事务!

我建议你阅读领域驱动设计,以便更好地理解为什么Doctrine 2如此出色.

不要误解我的意思,你可以用Zend_Db做DDD,但它不是真的有OOTB(因为它不是ORM),并且不会像Doctrine 2那样功能强大且功能齐全.