2011-10-31 65 views
9

我是Symfony框架第2版的新手。我使用v1製作了一些項目,但現在試圖讓我的頭部圍繞新版本和它的功能。 我讀過Bundles的概念,但它的目的還不是很清楚。複雜Web應用程序中Symfony Bundle的確切描述

假設你有一個大型的網絡應用程序,例如CRM。捆綁包會是什麼樣子? 它是NewsletterBundle(用於發送通訊),ContactManagementBundle(用於管理聯繫人),UserBundle(用於編輯用戶及其權限)。

或者它會像EmailBundle(用於處理整個電子郵件流量),CRMBundle(用於放入所有CRM代碼),PermissionsBundle,ApiBundle那樣更少。

回答

21

我喜歡這樣想:一個包應該代表一個特定的功能或一組項目的相似功能。

您的第一個示例比第二個示例更好地使用了bundle,因爲每個bundle的用途更加明確。儘管一切都可以使用一個CRMBundle,但您不會真正利用Symfony組織代碼的能力。此外,如果您想將自己的簡報代碼移植到新項目中,但不是全部的CRM代碼,則您可以更容易地複製NewsletterBundle而不是複製CRMBundle,然後修剪它。

當想到一個Symfony2項目時,有時候你想忘記你對symfony 1.x的所有知識,因爲它們採用截然不同的方法來解決許多問題。例如,在symfony 1中,通常爲項目構建「前端」和「後端」應用程序,每個應用程序顯然都包含特定於項目部分的邏輯。所以你可能在前端和後端應用都有一個新聞通訊控制器。在Symfony2中,最好只使用一個通訊包,但使用兩個控制器(也許稱爲「前端」和「後端」)。同樣,這樣做的直接好處是代碼的可重用性如何。

+0

非常感謝,這讓事情變得更加清晰。 – tomvo

+2

「Symfony組織你的代碼的能力」?我很抱歉,但symfony只是強制你創建捆綁包,並因此被綁定到基於約定的自動發現(也許你翻譯爲「代碼組織」)。 – Florian

+1

我使用symfony學到了一些東西,就像在應用程序開發人員那樣,在捆綁下組織事物通常是個壞主意。你最終綁定到一個框架。相反,組織你的代碼就好像沒有框架一樣。 Symfony2非常擅長,它非常靈活,你可以做到這一點。 – Florian

相關問題