Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.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
Php Symfony:如何在Bundle Controller中调用私有服务_Php_Symfony - Fatal编程技术网

Php Symfony:如何在Bundle Controller中调用私有服务

Php Symfony:如何在Bundle Controller中调用私有服务,php,symfony,Php,Symfony,我创建了一个捆绑包,我想用它的最佳实践 所以我所有的服务都是私人的 因此,除非您特别需要直接从 通过$container->get(),最好的做法是 私人服务。实际上,默认的services.yaml配置 默认情况下,将所有服务配置为私有 及 在Symfony core,我们已经做到了这一点,我们提供了所有服务和服务 专用别名,除少数选定别名外,在 引导时间。事实上,自举是最后也是唯一合法的方法 直接使用容器的用例 那么,我们是否应该反对注入 服务_集装箱与集装箱一起使用*?那是个好主意 社

我创建了一个捆绑包,我想用它的最佳实践

所以我所有的服务都是私人的

因此,除非您特别需要直接从 通过$container->get(),最好的做法是 私人服务。实际上,默认的services.yaml配置 默认情况下,将所有服务配置为私有

在Symfony core,我们已经做到了这一点,我们提供了所有服务和服务 专用别名,除少数选定别名外,在 引导时间。事实上,自举是最后也是唯一合法的方法 直接使用容器的用例

那么,我们是否应该反对注入 服务_集装箱与集装箱一起使用*?那是个好主意 社区在准备交响乐时可能考虑的可能性 五,

我有一个应用程序/控制器必须使用的特性或抽象控制器。trait可以通过自动连接调用私有服务,问题已经解决,但是 Symfony的最佳实践是不要仅在捆绑中使用自动布线:

公共和可重用捆绑包»

公共捆绑包应明确配置其服务,而不是依赖 关于自动布线

那么,如何将我的私有服务注入我的Trait或抽象控制器。甚至在App controller中,用户无需配置are services.yml

我希望我明白了


对不起我的英语。我试图改进它;-)

如果您正在开发第三方捆绑包,即其他人将使用的捆绑包,那么您必须手动定义您的服务,并使用xml。这些是最佳做法

现在,第三方捆绑包可以提供公共服务。您正在引用的文章引用了您的AppBundle服务,这些服务应该是私有的,因为它们包含您的应用程序/业务逻辑。默认情况下它们是私有的原因是,您应该使用构造函数依赖项注入来使用它们,因此更容易测试

现在,关于您的问题,您不应该在第三方包中创建控制器:这不是一个好的做法。相反,使用路由来路由到将执行所需操作的服务。Api平台可以做到这一点,在这里:


你找到答案了吗?如果不是,我可以用代码解释,可能会更清楚。@TomášVotruba我使用Api平台的解决方案,每个动作都是一个服务。但是如果用户想要创建一个控制器,他可以使用一个maker控制器,该控制器在trait中使用differents services操作。我并不理解,Symfony在第三方捆绑包中说“不要使用控制器”或“不要使用容器”,但easyadmin捆绑包使用它。Action as service是最好的解决方案,在我看来:)文档在某些地方可能会令人困惑,也不将其视为“上帝”,正如在每个文档中一样,都有许多自以为是的想法。