2013-05-16 62 views
0

我已經閱讀了關於bundle和Symfony2項目體系結構的很多不同的事情,但是我還沒有得出關於單個項目最佳實踐的結論這不涉及重新使用包等。原因是這是一個客戶特定的項目。Symfony2 Bundle /應用程序結構(前端/後端)

該應用程序是一個包含新聞,博客,多步驟申請表,聯繫人,推薦等不同部分的大型網站。每個部分都需要後端和前端功能,例如新聞文章可以由管理員在後端添加並可以在前端查看。後端將包含一些僅用於後端的功能,如管理員用戶,並且將有一個管理日誌記錄每個管理用戶的活動,因此需要在每個後端部分中都可訪問。

我最初以爲每個部分有不同的捆綁包,例如AdminUserBundle,NewsBUndle,BlogBu​​ndle等,之後我很快意識到存在很多共享的佈局/模板和功能(如AdminLog)。因此,你認爲對於這類項目來說最好的做法是什麼?我覺得我有三種選擇,但開放給其他建議:

  1. 1包的所有控制器,視圖,測試等中後端和前端目錄
  2. 3根 - CoreBundle,FrontendBundle和BackendBundle其中CoreBundle將包含所有共享功能,如實體,AdminLog等
  3. 包含前端和後端目錄在控制器,視圖,測試等內的每個部分的包。即NewsBundle將包含新聞實體,並將包含前端和後端控制器,視圖和試驗。 BlogBu​​ndle將包含博客實體和前端和後端控制器,視圖,測試等

感謝

+0

由於重用不是問題,我會跟選項1.去您可以隨時分手的事情,如果它變得太笨重。 – Cerad

+0

謝謝。我認爲這樣做雖然使它有點不整齊,因爲你可以在一個文件夾中有很多很多的控制器/視圖等。如果我們爲每個功能單獨提供了一個包,則可以更輕鬆地導航並找到正在處理的特定部分的代碼。 – user1961082

回答

1

按照Symfony2的文檔:

在Symfony2中,捆綁就像是一個插件,除了應用程序中的所有代碼都將存在於一個包中。軟件包不過是一個包含與特定功能相關的所有內容的目錄,包括PHP類,配置,甚至是樣式表和Javascript文件(請參閱軟件包系統)。

捆綁應解決業務/功能問題。所以我認爲第三個建議是一個很好的解決方案。

你可以有一個包含技術問題的CoreBundle,比如全局表單類型,表單主題,自定義原則函數。此捆綁包不包含業務問題。

與其他包應該只包含業務問題像束爲新聞的另一個用於博客另一個用於評論 ...

希望這是有幫助的。

最佳方面

+0

謝謝。我想我會去用這種方法。 – user1961082

+1

不!不是這樣。 [Symfony文檔](http://symfony.com/doc/current/best_practices/creating-the-project.html):「但是一個bundle可以作爲一個獨立的軟件重用。如果UserBundle不能在其他Symfony應用程序中「按原樣」使用,那麼它不應該是它自己的bundle。而且,如果InvoiceBundle依賴於ProductBundle,那麼使用兩個單獨的bundle沒有什麼優勢。 - **最佳實踐**: *爲您的應用程序邏輯創建一個名爲AppBundle的包。 – Trix

相關問題