對於我的應用程序包,我需要一些既不是控制器也不是模型的類。例如,我想要有一個scorecard
類,它具有「技能」,「效率」,「美」等成員。此外,它可能有像「meanScore」這樣的成員方法/獲得者。我在哪裏可以將Symfony中的類既不是控制器也不是模型?
這樣的類會在Symfony框架中出現在哪裏?
對於我的應用程序包,我需要一些既不是控制器也不是模型的類。例如,我想要有一個scorecard
類,它具有「技能」,「效率」,「美」等成員。此外,它可能有像「meanScore」這樣的成員方法/獲得者。我在哪裏可以將Symfony中的類既不是控制器也不是模型?
這樣的類會在Symfony框架中出現在哪裏?
我同意@Gordon這聽起來像一個商業對象。但是如果你確定它不是,你的下一步就是弄清楚你將如何對它進行分類。它是幫手嗎?一個事件監聽器?一個實用程序類?一旦你明白了這一點,問問自己:是否特定於捆綁軟件,還是要在項目中重複使用它?
假設您決定它是一個事件偵聽器並且屬於該包。把它放在MyBundle/EventListener
。如果是幫手,請將其放入MyBundle/Helper
。現在,如果你打算重新使用它的項目(在這種情況下,它實際上聽起來不像它,但忍耐着我......)你可能會更好地在vendor
中創建一個地方。
要記住的重要一點是,因爲Symfony2太年輕了,沒有真正的最佳實踐清單來回答這些問題。現在,我們有必要了解哪些是有效的,哪些沒有。這就像狂野的西部:)
由於該類顯然代表來自您的域的業務對象,因此它屬於該模型。
我爲自己回答這些問題的方式是我去KnpBundles並檢查其他開發人員是如何做的。
另外需要注意的是,Symfony2在配置方面都是關於自由選擇的。只要您正確設置了所有Symfony2內核護理,您可以將所有內容粘貼到Random
文件夾中。那麼,這可能會把它帶到一個極端,但例如Listener
或EventListener
- 沒有區別。現在
,如果你問我,我會說,對於Scorecard
- 取決於你要去的地方使用它,無論是Service
或Helper/Util
關於breadcrumb
- 似乎是一個很好的例子爲枝條延長。
我不認爲這是一個服務。服務通常通過調用Domain對象的公共API來進行計算。他們很少包含自己的狀態(「技能」,「效率」,「美」)。它們更像是UI和Domain層之類的外層之間的薄介體層。 – Gordon
在不是商業對象的情況下呢?假設我有'breadcrumb'類,有兩個成員'name'和'href'? –
@Robert我不知道Symfony和Twig會把它放在哪裏。我仍然將它放入模型中,但不包含在域圖層中,而是包含在通用應用層中,因爲它是UI的一部分。或者,如果它的可重用,我會把它放到某種框架/ lib文件夾 – Gordon