Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Symfony2放置自定义帮助器类的位置_Symfony - Fatal编程技术网

Symfony2放置自定义帮助器类的位置

Symfony2放置自定义帮助器类的位置,symfony,Symfony,我从一个Symfony2项目开始。我知道框架的基本知识,但我有一个问题: 我为帮助或业务逻辑创建的助手类的正确位置在哪里?您可以在包下创建自定义类,例如在文件夹helper/下。。 但是,要在代码中使用这些帮助程序,您需要在服务描述文件(例如services.xml)中定义这些帮助程序。。。然后可以使用$container->get('your_helper')->保存业务逻辑的最佳方法是创建服务来处理所有逻辑。因此,它将出现在: src/Foo/BarBundle/Service 您需要在s

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

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

保存业务逻辑的最佳方法是创建服务来处理所有逻辑。因此,它将出现在:

src/Foo/BarBundle/Service

您需要在
services.yml

中调用服务,Max的回答是正确的。然而,我质疑他为您的代码推荐的路径

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

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

也就是说,您的服务应该放在名为“DependencyInjection”的文件夹中,而不是“Services”文件夹中。总之,它应该是src/Foo/BarBundle/DependencyInjection


我这样说是因为有人拥有了前者,并且刚刚将它们全部转移到后者(!)

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

src/MyBundle/Helper/MyUtilHelper.php
我可以在包中使用
MyUtilHelper
类,而无需调用服务容器,即我不需要调用

$container->get('my_util');

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

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


根据官方文件,特别是-Symfony最佳实践,您应该将您的服务存储在src下的Utils文件夹中。我相信,无论您是否希望通过服务容器将捆绑包中的服务提供的功能提供给应用程序的其他部分,这都是正确的方法。此外,您可以在任何您认为合适的地方存储助手类。关于@Adam Knowles和@PachinSV answers,它们并不完全正确,因为它们没有回答您的问题——“我为帮助或业务逻辑创建的助手类的正确位置在哪里?”或者“我想通过服务容器注册和使用的类的存储位置在哪里”-但不是将捆绑包扩展类放在何处-其主要目的是提供有关配置的信息,这些信息应在引导内核的过程中自动从捆绑包加载到应用程序服务容器。。如果你真的对下面的一个答案给出了正确的答案,然后陈述你是如何实施该解决方案的,以及该解决方案最终是否对你有效,那么对社区的其他人来说,这将是一件好事。所以这一切都是关于给予和索取,而不仅仅是索取。你错了,你必须在DependencyInjection中存储DI扩展,而不是服务本身。我同意@PachinSV。本页明确提到: