Symfony2放置自定义帮助程序类的位置

时间:2012-03-18 14:25:32

标签: symfony

我从Symfony2项目开始。我知道框架基础知识,但我有一个问题: 在我为帮助或业务逻辑创建的辅助类的适当位置在哪里?

6 个答案:

答案 0 :(得分:13)

Max的回答是正确的。但是我质疑他为你的代码推荐的路径。

  

以下类和文件具有特定的位置:

     

服务容器扩展(属于)DependencyInjection /

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

这表示您的服务应放在名为“DependencyInjection”的文件夹中,而不是“服务”。完整的,应该是src / Foo / BarBundle / DependencyInjection

我说这是一个拥有前者的人,刚刚将他们全部移动到后者(!)

答案 1 :(得分:8)

@Adam说错了,你必须在DependecyInjection目录中存储依赖注入扩展而不是服务本身。在文档中说,您可以将(自定义)业务逻辑类存储在您喜欢的任何位置。

http://symfony.com/doc/current/best_practices/business-logic.html

答案 2 :(得分:6)

保持业务逻辑的最佳方法是创建服务来处理所有逻辑。所以它将在:

src/Foo/BarBundle/Service

您需要在services.yml

中调用该服务

答案 3 :(得分:3)

我最近在现有的Symfony2项目上做了一些小工作。正如Tuong Le的回答所描述的那样,我在包的Helper目录下创建了我的Helper类,并使用Helper后缀创建了类名,即辅助类位于:

src/MyBundle/Helper/MyUtilHelper.php

我可以在我的包中使用MyUtilHelper类,而无需调用服务容器,即我不需要调用。

$container->get('my_util');

我真的不知道是否有一些特殊配置。在我的设置中;有人已经设置了它,我只是添加了新的功能。

答案 4 :(得分:2)

您可以在Bundle下创建自定义类,例如在Helper /文件夹下创建。 但是,要在代码中使用这些帮助程序,您需要在服务描述文件中定义这些帮助程序(例如services.xml)...然后您可以使用$ container-> get(& #39; your_helper') - >

答案 5 :(得分:0)

根据官方文档 - 特别是 - Symfony最佳实践 - 您应将服务存储在 src 下的 Utils 文件夹中。我相信,这是正确的方式,无论您是否想要或不通过服务容器使您的捆绑服务提供的功能可用于其他应用程序部分。此外,您可以在任何您认为合适的地方存储帮助程序类。关于@Adam Knowles和@PachinSV的答案 - 他们不是很正确,因为他们没有回答你的问题 - "在我为帮助或业务逻辑创建的帮助类的适当位置在哪里?"或者"在哪里存储我想通过服务容器注册和使用的类" - 但不在哪里放置捆绑扩展类 - 主要目的是提供有关配置的信息,该配置应从自动加载从捆绑包服务容器启动内核的过程中。