Php 基于Symfony2捆绑包的应用程序配置合并到全局配置中

Php 基于Symfony2捆绑包的应用程序配置合并到全局配置中,php,symfony,Php,Symfony,我目前正在构建一个相当大的Symfony 2应用程序,其中包含大量不断增加的捆绑包,我一直在努力统计这些捆绑包 我试图将所有捆绑包都保留为系统的每个模块,这为我提供了一个易于管理的结构。不太好的是我的app/config/config.yml很快就失控了。理解导入可以在这个文件中完成,这在一定程度上对我有所帮助,但我想移动特定于每个包的整个配置范围,这应该有助于保持这些包在我们的其他应用程序中可重用 下面是我想转移到单个bundle的一些示例 1)依赖项注入 我们在所有内部bundle中使用它,

我目前正在构建一个相当大的Symfony 2应用程序,其中包含大量不断增加的捆绑包,我一直在努力统计这些捆绑包

我试图将所有捆绑包都保留为系统的每个模块,这为我提供了一个易于管理的结构。不太好的是我的
app/config/config.yml
很快就失控了。理解导入可以在这个文件中完成,这在一定程度上对我有所帮助,但我想移动特定于每个包的整个配置范围,这应该有助于保持这些包在我们的其他应用程序中可重用

下面是我想转移到单个bundle的一些示例

1)依赖项注入

我们在所有内部bundle中使用它,因为它使开发更快、更易于管理

# Annotations/Config
jms_di_extra:
  locations:
    bundles:
      - AppBundle
      - BlogBundle
      - ContentBundle
      - StoreBundle
      - UserBundle
我希望将此块移动到每个单独的bundle
config.yml
,或者更好,但这将在每个bundle
DependencyInjection/AppBundleExtension.php
中启用

2)路由

用于路由配置,但每个捆绑包仍然需要包含在
app/config/routing.yml
中,这会给我们留下一个相当大的无法管理的文件

一些例子

app:
  resource: "@AppBundle/Controller"
  type:     annotation

blog:
  resource: "@BlogBundle/Controller"
  type:     annotation

content:
  resource: "@ContentBundle/Controller"
  type:     annotation

oneup_uploader:
  resource: .
  type:     uploader
3)一次性上传器

这是我最大的切入点,这种配置目前在我们使用的20多个捆绑包之间有500多行。下面是从
config.yml
导入的
app/config/uploader.yml
中提取的一些示例。如果我能把这些东西放到每个包里,我会很高兴的

# Uploader
oneup_uploader:
  mappings:
    bundle_name_reference1:
      frontend: blueimp
      storage:
        type: gaufrette
        filesystem: gaufrette.local_filesystem
    bundle_name_reference2:
      frontend: blueimp
      storage:
        type: gaufrette
        filesystem: gaufrette.local_filesystem

我的想法是,通过将所有这些配置放到每个单独的包中,只需更新
AppKernel.php
,就可以很容易地启用/禁用它们。我假设所有这些都是可能的,因为Symfony非常灵活,当涉及到这些较低级别的更改时,我有点不知所措

您只需添加

oneup_uploader:
    #...
src/Vendor/WhateverBundle/Resources/config/services.yml

关于如何将捆绑包与app/config解耦,有一个食谱条目:

我认为理想的低耦合解决方案是创建一个扩展另一个包的包(例如MyoneupLoaderBundle),并在那里使用cookbook方法