Symfony _defaults捆绑

时间:2017-10-21 11:16:13

标签: symfony symfony-3.3

我是Symfony的新手,并且对依赖注入有一些疑问,特别是关于Symfony 3.3

  1. 可以为每个单独的包单独声明新的_defaults块,还是全局的并在托管应用中定义?

  2. 我可以在可重复使用的捆绑包中使用the new things类似的自动装配,还是必须单独申报所有捆绑服务?

1 个答案:

答案 0 :(得分:1)

  1. 每个文件声明。您也可以在单个服务定义中覆盖它。 E.g。

    # app/config/services.yml
    services:
        _defaults:
            autowire: true
    
        App\SomeService:
            autowire: false
    
  2. 简而言之:是的。
  3. 我觉得您要求如何将所有这些功能组合在一起最佳实践是什么。这样说,我将通过服务定义的多包示例扩展我的答案。

    使用2个捆绑包的应用程序将如下所示

    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依赖注入功能