DataMapper ORM与Doctrine

Jor*_*eno 11 php orm doctrine codeigniter codeigniter-datamapper

我即将开始在CodeIgniter中开发一个新的Web应用程序.过去,我使用DataMapper ORM来满足我的对象映射需求,并且对它的功能完全满意.但是,我的满意度仅限于我的知识.因此,我正在考虑转向学说.

我查看了Doctrine的文档 - 看来你必须非常广泛地定义你的模型; 添加getter和setter,提供方向引用,提供映射等.乍一看,这似乎是与DataMapper ORM直接比较的巨大开销.

任何有两个ORM经验的人都会评论是什么驱使你从一个到另一个吗?

Doctrine对DataMapper ORM无法实现什么关键功能?

手动模型定义是向后还是向前迈出的一步?我认为这是表演的事情.

San*_*hal 22

DataMapper ORM和Doctrine遵循完全不同的约定.DataMapper ORM(令人困惑的是)不是数据映射器而是活动记录实现.这意味着您的模型类与ORM库紧密集成.您的模型基于内置的DataMapper模型.你可以免费获得很多魔法,但作为交换,你可以将你的模型与DataMapper ORM结合起来.

另一方面,Doctrine使用真正的数据映射器模式.它的模型是普通的旧PHP对象.它们没有外部依赖关系.Doctrine可以接受任何旧的PHP对象,将其存储在数据库中,然后再次检索它.它的模型根本没有与ORM结合.

你在Doctrine文档中读到的关于getter,setter,关系完整性等等的东西,它们只是很好的面向对象开发实践.它们不是学说的要求,但它们会让你的生活更轻松.您也应该将它们用于DataMapper ORM模型!如果你愿意,你可以在你的Doctrine模型上使用魔法getter和setter,甚至只使用普通的旧公共属性.仅仅因为学说说你不应该这样做并不意味着你不能这样做.Doctrine很乐意将您的模型与公共属性一起使用,但有一些警告.就这样.