Symfony:动态配置文件加载
Symfony: Dynamic configuration file loading
这是上下文:
- 我的应用程序的每个用户都属于一家公司。
- 每个公司的参数都在 "company.yml" 配置文件中定义,所有这些都共享完全相同的结构。
- 然后使用这些参数来调整应用程序行为。
这听起来可能微不足道,但我正在寻找的是加载这些特定 YAML 文件的正确方法。
据我目前的了解,使用扩展 class 是不可能的,因为它不了解当前用户。
使用自定义服务来管理这些配置而不是依赖 Symfony 的参数似乎更合适,但我找不到如何实现验证(使用配置 class)和缓存。
非常感谢任何帮助,感谢您的投入!
看看http://symfony.com/doc/current/cookbook/configuration/configuration_organization.html as well as http://symfony.com/doc/current/cookbook/configuration/environments.html。如果这不是正确答案,您必须更具体地说明 company.yml 配置包含的内容。
使用 Symfony2 的 Yaml、处理器和配置组件应该可以满足您的需要。
- http://symfony.com/doc/current/components/yaml/introduction.html
- http://symfony.com/doc/current/components/config/definition.html
定义你的 "CompanyConfiguration" class 就像你在 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);
现在您应该可以使用您的公司数组来执行您想要的操作了
这是上下文:
- 我的应用程序的每个用户都属于一家公司。
- 每个公司的参数都在 "company.yml" 配置文件中定义,所有这些都共享完全相同的结构。
- 然后使用这些参数来调整应用程序行为。
这听起来可能微不足道,但我正在寻找的是加载这些特定 YAML 文件的正确方法。
据我目前的了解,使用扩展 class 是不可能的,因为它不了解当前用户。
使用自定义服务来管理这些配置而不是依赖 Symfony 的参数似乎更合适,但我找不到如何实现验证(使用配置 class)和缓存。
非常感谢任何帮助,感谢您的投入!
看看http://symfony.com/doc/current/cookbook/configuration/configuration_organization.html as well as http://symfony.com/doc/current/cookbook/configuration/environments.html。如果这不是正确答案,您必须更具体地说明 company.yml 配置包含的内容。
使用 Symfony2 的 Yaml、处理器和配置组件应该可以满足您的需要。
- http://symfony.com/doc/current/components/yaml/introduction.html
- http://symfony.com/doc/current/components/config/definition.html
定义你的 "CompanyConfiguration" class 就像你在 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);
现在您应该可以使用您的公司数组来执行您想要的操作了