Symfony:动态配置文件加载

时间:2015-09-15 12:49:27

标签: symfony configuration

以下是上下文:

  • 我的应用程序的每个用户都属于一家公司。
  • 每个公司的参数都在“company.yml”配置文件中定义,所有这些参数都具有完全相同的结构。
  • 然后使用这些参数来调整应用程序行为。

这可能听起来微不足道,但我正在寻找的是加载这些特定YAML文件的正确方法。

据我所知,到目前为止,使用Extension类是不可能的,因为它不了解当前用户。

使用自定义服务来管理这些配置而不是依赖Symfony的参数似乎更合适,但我找不到如何实现验证(使用Configuration类)和缓存。

非常感谢任何帮助,感谢您的投入!

2 个答案:

答案 0 :(得分:3)

使用Symfony2的Yaml,Processor和Configuration组件应该符合您的需求。

定义您的“CompanyConfiguration”类,就像您在DependencyInjection案例中一样 创建一个新的“CompanyLoader”服务

use Symfony\Component\Yaml\Yaml;
use Symfony\Component\Config\Definition\Processor;

$companies = Yaml::parse('company.yml');
$processor = new Processor();
$configuration = new CompanyConfiguration();
$processor->processConfiguration($configuration, $companies);

现在你应该可以使用你的公司阵列来做你想做的事了

答案 1 :(得分:1)

查看http://symfony.com/doc/current/cookbook/configuration/configuration_organization.html以及http://symfony.com/doc/current/cookbook/configuration/environments.html。如果这不是正确的答案,您必须更具体地说明您的company.yml配置包含的内容。