Symfony1 推动或教条;对于Symfony 1.4,哪一个更好

Symfony1 推动或教条;对于Symfony 1.4,哪一个更好,symfony1,doctrine,symfony-1.4,propel,Symfony1,Doctrine,Symfony 1.4,Propel,我有CodeIgniter和Cake PHP的现场项目经验。然而,现在我需要在一个巨大的项目,这两个都是不合适的工作。我几乎决定使用symfony 1.4(根据我客户的要求,2.0不是一个选项) 在Symfony 1.4中,我也对ORM的选择感到困惑:条令还是推进?我浏览了几个链接。目前发现的最好的是 然而,所有这些比较似乎至少有两年的历史,而且从那时起,世界肯定会发生很大变化。我对编码风格没有任何问题;我对所有的活动记录、标准、DQL或任何东西都很满意。对我来说,性能比最终的编码风格更重要。

我有CodeIgniter和Cake PHP的现场项目经验。然而,现在我需要在一个巨大的项目,这两个都是不合适的工作。我几乎决定使用symfony 1.4(根据我客户的要求,2.0不是一个选项)

在Symfony 1.4中,我也对ORM的选择感到困惑:条令还是推进?我浏览了几个链接。目前发现的最好的是

然而,所有这些比较似乎至少有两年的历史,而且从那时起,世界肯定会发生很大变化。我对编码风格没有任何问题;我对所有的活动记录、标准、DQL或任何东西都很满意。对我来说,性能比最终的编码风格更重要。我主要关心处理大量数据时的性能,可能是集群数据库下多个表中的数百万行。不幸的是,目前我的经验不足以独立决定这件事

有人能解释一下Symfony 1.4下推进/条令的性能吗?除了性能,在选择PHP ORM时是否还有其他值得注意的因素(除了编码风格)需要注意;dr:我很长一段时间都在使用教义,如果我必须开始新的工作,我会选择推进

这是一个几乎没有好答案的常见问题。但我会告诉你我的观点

我从第一个alpha(以及旧的symfony 0.63)开始就一直在使用学说。我们选择条令而不是推进,因为条令支持PDO(这是PHP本机的),而推进仍在运行(这不是本机的)。与PDO相比,克里奥尔语的速度非常慢(当然)

最近,教义又增添了一种魔力。我的意思是,你可以调用
getField
findOneByField
,它会返回你想要的东西。这是一件非常伟大的事情,而不是必须建立自己的能手和二传手。魔术在这个时候真的很流行

使用条令编写查询非常简单,而不是使用令人痛苦的标准和来自Propel的标准,后者非常冗长。我真的是教义的粉丝,并建议大家开始使用它而不是推进

然后,从1.3开始切换到PDO,并开始有一个很好的API来编写查询,几乎与Doctrine的方法相同。主要的区别是,推进产生了所有的魔法,而条令是在飞行中建立的。我认为这是最大的区别

这个代码中没有任何魔力。它生成所有getter/setter、join等。。当你建立你的模型时。条令在运行查询时执行所有操作。这对于中小型项目来说是可以的,但它开始变得更大,它将成为一个缓慢的解决方案。它对于调试也很有用,因为您可以在生成的类中找到代码,而不必从一个类跳到另一个类来找到处理这种情况的全局方法

两种ORM都使用行为。我喜欢行为。在理论和实践中,它们是以不同的方式处理的。条令仍然使用它的魔法来处理它们,其中推进从类内的行为生成所有东西(从生成的类中多出一点而不是魔法点)

到目前为止,由于1.2.x分支几乎已经死了,所以条令2(对于SF1.4来说根本不是原生的)并没有真正改变条令(从您提到的线程中给出一个例子)。推进仍然处于活动状态,正如您在上所看到的,非常活跃

我仍在从事教条工作,但几年来我从《推进》中学到了很多东西。我已经建立了一些关于教义的个人项目。从今天起,我改变了主意,如果我必须开始一个新项目,我将使用Propel

几个链接:

  • (关于programmers.se)
  • 在这个选择上(当然有利于推进)

2.0现在看起来还不成熟什么?2.0变得越来越好,第一个稳定的版本已经1年了。啊,如果我伤害了任何人,我很抱歉。事实上,我应该根据我客户的要求说&客户就是上帝……:)好的,更清楚的是,我已经更新了你的问题。如果这个问题的分数为零,我不会投反对票,但是我已经-1来阻止这种比较问题。根据常见问题解答,这些问题的答案很快就过时了。我想Doctrine2很难与symfony 1.4(无集成)配合使用,因此这意味着要从Doctrine2开始,它的速度很慢(设计不好),并且不再维护。将Propel 1.6与symfony 1.4配合使用似乎是一个实际的解决方案(也是最安全的)。所以这个答案是+1。