2012-03-18 51 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的答案 - 他们并不完全正确,因为他们没有回答你的问题 - “为帮助或业务逻辑创建帮助者类的正确位置在哪里?”或“在哪里存储我想注册并通过服务容器使用的课程” - 但不能放在何处软件包扩展类 - 主要目的是提供有关应该配置的信息自动加载从您的软件包到应用程序服务容器的过程中启动内核