phi*_*dah 76
我会选择Doctrine.在我看来,它是一个更活跃的项目,并且作为symfony的默认ORM,它得到了更好的支持(即使正式的ORM被认为是相同的).
此外,我更喜欢你使用查询的方式(DQL而不是Criteria):
<?php
// Propel
$c = new Criteria();
$c->add(ExamplePeer::ID, 20);
$items = ExamplePeer::doSelectJoinFoobar($c);
// Doctrine
$items = Doctrine_Query::create()
->from('Example e')
->leftJoin('e.Foobar')
->where('e.id = ?', 20)
->execute();
?>
Run Code Online (Sandbox Code Playgroud)
(Doctrine的实现对我来说更直观).
另外,我更喜欢你在Doctrine中管理关系的方式.
我认为Doctrine文档中的这个页面值得一读:http://www.doctrine-project.org/documentation/manual/1_2/en/introduction : doctrine-explained
总结一下:如果我开始一个新项目或者不得不在学习Doctrine和Propel之间做出选择,我会在任何时候选择Doctrine.
Jan*_*bry 40
我有偏见,因为我对Propel的下一个版本提供了一些帮助,但是你必须考虑Propel确实是第一个可用的ORM,然后在Doctrine创建时稍微滞后,但现在又有了积极的开发.Symfony 1.3/1.4附带Propel 1.4,大多数比较都停留在Propel 1.3上.此外,Propel(1.5)的下一个版本将包含许多改进,特别是在创建Criteria时(导致编写的代码更少).
我喜欢Propel,因为它似乎没有Doctrine那么复杂:大多数代码都在少数生成的类中,而Doctrine在许多类中分离了功能.我喜欢很好地理解我正在使用的库(不是太多"魔法"),但当然,我对Propel有更多的经验,所以也许Doctrine在幕后并不那么复杂.有人说Propel更快,但你应该自己检查一下,并考虑这是否超过其他差异.
也许您还应该考虑针对不同框架的Symfony插件的可用性.我相信Propel在这方面有优势,但我不知道有多少列出的插件仍然是最新版本的Symfony.
lo_*_*fye 23
这取决于个人喜好.我使用Propel因为(除其他外)我喜欢这样一个事实,即一切都有自己的具体getter和setter方法.在学说中,情况并非如此.
推进:
$person->setName('Derek');
echo $person->getName();
Run Code Online (Sandbox Code Playgroud)
教义:
$person->name = 'Derek';
echo $person->name;
Run Code Online (Sandbox Code Playgroud)
我喜欢有吸气剂和定型器的原因是我可以在其中加入各种逻辑,如果需要的话.但这只是我个人的偏好.
我还要补充一点,虽然Propel过去发展缓慢,但它现在又在积极发展.它在过去几个月内发布了几个新版本.最新版本的Propel包含一个类似于Doctrine的"流畅查询界面",因此如果您不想使用,则不必再使用Criteria.
Bry*_* M. 20
应当指出的学说2是目前正在开发中 发布 [编者按]和功能几乎是从学说1当前稳定版本,它依靠数据映射模式,而不是活动记录,并使用"实体管理器"来处理持久性完全不同逻辑.发布后它将与Java的Hibernate更接近(Doctrine 1更像是Rails的ActiveRecord).
我一直在使用Doctrine 2的alpha版本进行开发,并且必须说它超越了Doctrine 1(仅仅是我的观点,而且我从未使用过Propel).当Doctrine社区发布时,它可能会向它发展.
我鼓励你查看Doctrine,但是如果你更喜欢Propel和Doctrine现在使用的Active Record风格,你可能只想坚持使用Propel.
小智 5
这两个参考文献有点过时,所以你仍然可以涵盖一些通用性,基本上你必须评估你对框架的体验,这个学说的一个主要缺点就是无法让IDE让你自动编码.获胜者,学习曲线推进和学说是非常不同的,如果您的项目需要管理复杂的数据模型使用原则,如果您想快速使用最好记录的ORM并在Propel中找到更多支持,则更容易推动互联网使用,更成熟,我相信最常用.
http://propel.posterous.com/propel-141-is-out
我建议使用propel 1.6,它更适合IDE的自动完成功能.
| 归档时间: |
|
| 查看次数: |
53881 次 |
| 最近记录: |