我是Symfony的新手,并且对依赖注入有一些疑问,特别是关于Symfony 3.3
可以为每个单独的包单独声明新的_defaults
块,还是全局的并在托管应用中定义?
我可以在可重复使用的捆绑包中使用the new things类似的自动装配,还是必须单独申报所有捆绑服务?
答案 0 :(得分:1)
每个文件声明。您也可以在单个服务定义中覆盖它。 E.g。
# app/config/services.yml
services:
_defaults:
autowire: true
App\SomeService:
autowire: false
我觉得您要求如何将所有这些功能组合在一起和最佳实践是什么。这样说,我将通过服务定义的多包示例扩展我的答案。
imports:
- { resource: "../../src/FirstBundle/config/services.yml" }
- { resource: "../../src/SecondBundle/config/services.yml" }
services:
_defaults:
autowire: true
App\SomeService:
autowire: false
使用第一个包:
# src/FirstBundle/config/services.yml
services:
_defaults:
autowire: true
App\FirstBundle\:
resource: ../..
第二捆:
# src/SecondBundle/config/services.yml
services:
_defaults:
autowire: true
App\SecondBundle\:
resource: ../..
此外,由于glob patterns,您可以将首个文件改进为单行导入。
我use it in practise喜欢这样:
imports:
- { resource: "../../src/**/config/services.yml" }
services:
_defaults:
autowire: true
App\SomeService:
autowire: false
您可以在this post with before/after config examples中详细了解 Symfony 3.3依赖注入功能。