Php 基于Symfony2捆绑包的应用程序配置合并到全局配置中
我目前正在构建一个相当大的Symfony 2应用程序,其中包含大量不断增加的捆绑包,我一直在努力统计这些捆绑包 我试图将所有捆绑包都保留为系统的每个模块,这为我提供了一个易于管理的结构。不太好的是我的Php 基于Symfony2捆绑包的应用程序配置合并到全局配置中,php,symfony,Php,Symfony,我目前正在构建一个相当大的Symfony 2应用程序,其中包含大量不断增加的捆绑包,我一直在努力统计这些捆绑包 我试图将所有捆绑包都保留为系统的每个模块,这为我提供了一个易于管理的结构。不太好的是我的app/config/config.yml很快就失控了。理解导入可以在这个文件中完成,这在一定程度上对我有所帮助,但我想移动特定于每个包的整个配置范围,这应该有助于保持这些包在我们的其他应用程序中可重用 下面是我想转移到单个bundle的一些示例 1)依赖项注入 我们在所有内部bundle中使用它,
app/config/config.yml
很快就失控了。理解导入可以在这个文件中完成,这在一定程度上对我有所帮助,但我想移动特定于每个包的整个配置范围,这应该有助于保持这些包在我们的其他应用程序中可重用
下面是我想转移到单个bundle的一些示例
1)依赖项注入
我们在所有内部bundle中使用它,因为它使开发更快、更易于管理
# Annotations/Config
jms_di_extra:
locations:
bundles:
- AppBundle
- BlogBundle
- ContentBundle
- StoreBundle
- UserBundle
我希望将此块移动到每个单独的bundleconfig.yml
,或者更好,但这将在每个bundleDependencyInjection/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方法