2012-03-18 54 views
22

我從一個Symfony2項目開始。我知道框架的基礎知識,但我有一個問題: 在哪裏可以找到幫助我創建的幫助類或業務邏輯的正確位置?Symfony2在哪裏放置自定義幫助類

+2

爲了完成起見,你會知道的。如果你實際上給了下面答案中的一個答案的正確答案,然後說明你是如何實現解決方案的最後會爲你排好。 SO是關於給予和服用的,而不僅僅是服用 – abbood 2014-06-11 07:13:19

回答

13

Max的回答是正確的。然而,我質疑他爲你的代碼建議的路徑。

以下類和文件有具體的炮位:

服務容器擴展DependencyInjection(以屬於)/

http://symfony.com/doc/current/cookbook/bundles/best_practices.html

,說你的服務應該放在一個文件夾中稱爲「依賴注入」,而不是「服務」。在全面,它應該是SRC /美孚/ BarBundle/DependencyInjection

我這樣說是因爲有人說了前者,並剛剛完成他們全部轉移到後者(!)

+8

你錯了,你必須將DI Extensions存儲在DependencyInjection中,而不是服務本身。 http://symfony.com/doc/current/best_practices/business-logic.html – PachinSV 2015-01-29 22:15:07

+0

我同意@PachinSV。本頁面明確提到:http://symfony.com/doc/current/cookbook/bundles/extension.html – 2016-07-05 03:24:57

2

您可以在您的Bundle下創建自定義類,例如文件夾Helper/.. 但是,要在代碼中使用這些助手,您需要在服務描述文件中定義這些助手(如services.xml)...然後你可以使用$ container-> get('your_helper') - >

5

保持業務邏輯的最好方法是創建服務來處理所有的邏輯。因此,這將是:

src/Foo/BarBundle/Service 

,你需要調用在services.yml服務。

3

我最近做了一些小的工作現有的Symfony2項目。正如答案來自Tuong Le描述,我創建了Helper類的Helper目錄與助手後綴的包和類名的下即輔助類位於:

src/MyBundle/Helper/MyUtilHelper.php 

我可以在我的包使用MyUtilHelper類不調用服務容器即我不需要打電話。

$container->get('my_util'); 

我真的不知道是否有一些特殊的配置。在我的設置中;有人已經設置好了,我只是增加了新的功能。

0

根據官方文檔 - 尤其是 - Symfony的最佳實踐 - 您應將服務文件夾存儲在utils的的SRC下。我相信,無論您希望還是不希望通過服務容器將您的軟件包的服務提供的功能提供給其他應用程序部分,這都是正確的方式。此外,您可以將助手課程存儲在您認爲合適的任何地方。關於@Adam Knowles和@PachinSV的答案 - 他們並不完全正確,因爲他們沒有回答你的問題 - 「爲幫助或業務邏輯創建幫助者類的正確位置在哪裏?」或「在哪裏存儲我想註冊並通過服務容器使用的課程」 - 但不能放在何處軟件包擴展類 - 主要目的是提供有關應該配置的信息自動加載從您的軟件包到應用程序服務容器的過程中啓動內核