tl; dr:我長時間使用Doctrine,如果必須開始新的活動,我會選擇Propel。
這是一個很常見的問題,幾乎沒有很好的答案。但我只是給你我的觀點。
自從第一個alpha(以及舊的symfony 0.63)以來,我一直與Doctrine一起工作。我們選擇Doctrine而不是Propel,因爲Doctrine支持PDO(原生PHP),Propel仍然在Creole(這不是原生的)上運行。克里奧爾人與PDO相比非常緩慢(當然)。
最近,主義添加了迷失的魔法。我的意思是,你可以撥打getField
,findOneByField
,它會返回你想要的。這真的很棒,而不是必須建立自己的getter和setter。 魔術這次真的很時髦。
使用Doctrine編寫查詢非常簡單,而非Propel中令人痛心的Criteria和Criterion,它非常冗長。我非常喜歡教義,並建議大家開始使用它,而不是Propel。
然後,Propel從1.3開始切換到PDO,並開始有一個很好的API來寫查詢,幾乎和Doctrine一樣。主要區別在於,Propel會生成所有魔法東西,而教義則在飛行中生成。這是我認爲的最大區別。
Propel在這段代碼中沒有任何魔力。它會生成所有的getter/setter,join等,當你建立你的模型。它在運行查詢時會做所有事情。對於中小型項目來說沒問題,但是它開始變大,這將是一個緩慢的解決方案。調試也很好,因爲您可以在生成的類中找到代碼,您不必從類跳轉到類以找到處理這種情況的全局方法。
這兩個ORM使用行爲。我喜歡行爲。它們在教義和推進中以不同的方式處理。學說仍然使用它的魔法來處理它們,其中Propel根據類內的行爲生成一切(從生成的類而不是魔法類生成的一點)。
由於1.2.4分支幾乎死亡,因爲Doctrine 2(根本不是原生1.4版本),所以到目前爲止,Doctrine沒有真正改變(從你提到的線索給出一個鏡頭) (last release are 24/08/2010)。 Propel仍然活躍,非常活躍,您可以在github上看到。
我仍然與Doctrine一起工作,但幾年以來我從Propel中學到了很多東西。我在教義上建立了一些個人項目。截至今天,我改變了主意,如果我必須開始一個新項目,我會使用Propel來完成。
幾個環節:
來源
2012-08-27 11:57:13
j0k
* 2.0沒有看起來成熟的選項現在* 什麼? 2.0越來越好,第一次穩定版本是1歲。 – j0k
如果我傷害任何人,抱歉抱歉。其實我應該說根據我的客戶的要求和客戶是簡單的上帝...... :) –
好吧,這更清楚,我已經更新了你的問題。 – j0k