2011-09-06 49 views

回答

8

我同意@Gordon這聽起來像一個商業對象。但是如果你確定它不是,你的下一步就是弄清楚你將如何對它進行分類。它是幫手嗎?一個事件監聽器?一個實用程序類?一旦你明白了這一點,問問自己:是否特定於捆綁軟件,還是要在項目中重複使用它?

假設您決定它是一個事件偵聽器並且屬於該包。把它放在MyBundle/EventListener。如果是幫手,請將其放入MyBundle/Helper。現在,如果你打算重新使用它的項目(在這種情況下,它實際上聽起來不像它,但忍耐着我......)你可能會更好地在vendor中創建一個地方。

要記住的重要一點是,因爲Symfony2太年輕了,沒有真正的最佳實踐清單來回答這些問題。現在,我們有必要了解哪些是有效的,哪些沒有。這就像狂野的西部:)

2

由於該類顯然代表來自您的域的業務對象,因此它屬於該模型。

+0

在不是商業對象的情況下呢?假設我有'breadcrumb'類,有兩個成員'name'和'href'? –

+0

@Robert我不知道Symfony和Twig會把它放在哪裏。我仍然將它放入模型中,但不包含在域圖層中,而是包含在通用應用層中,因爲它是UI的一部分。或者,如果它的可重用,我會把它放到某種框架/ lib文件夾 – Gordon

3

我爲自己回答這些問題的方式是我去KnpBundles並檢查其他開發人員是如何做的。

另外需要注意的是,Symfony2在配置方面都是關於自由選擇的。只要您正確設置了所有Symfony2內核護理,您可以將所有內容粘貼到Random文件夾中。那麼,這可能會把它帶到一個極端,但例如ListenerEventListener - 沒有區別。現在

,如果你問我,我會說,對於Scorecard - 取決於你要去的地方使用它,無論是ServiceHelper/Util

關於breadcrumb - 似乎是一個很好的例子爲枝條延長。

+0

我不認爲這是一個服務。服務通常通過調用Domain對象的公共API來進行計算。他們很少包含自己的狀態(「技能」,「效率」,「美」)。它們更像是UI和Domain層之類的外層之間的薄介體層。 – Gordon

相關問題