Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/239.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何正确设置Symfony2中的默认配置值?_Php_Symfony_Dependency Injection_Configuration Files - Fatal编程技术网

Php 如何正确设置Symfony2中的默认配置值?

Php 如何正确设置Symfony2中的默认配置值?,php,symfony,dependency-injection,configuration-files,Php,Symfony,Dependency Injection,Configuration Files,我已经构建了一个服务,我希望能够从配置文件中进行配置。我已经能够让它根据需要工作,但是当我查看其他捆绑包时,没有看到与我必须使用的配置设置相同的配置设置。我觉得这是一个黑客。 我需要的是将一个配置值作为可选值,这意味着如果它不在config.yml文件中,它将使用默认值。我通过将以下内容添加到我的Configuration.php捆绑包文件中实现了这一点: namespace ChrisJohnson00\ApiProfilerBundle\DependencyInjection; ... c

我已经构建了一个服务,我希望能够从配置文件中进行配置。我已经能够让它根据需要工作,但是当我查看其他捆绑包时,没有看到与我必须使用的配置设置相同的配置设置。我觉得这是一个黑客。 我需要的是将一个配置值作为可选值,这意味着如果它不在config.yml文件中,它将使用默认值。我通过将以下内容添加到我的Configuration.php捆绑包文件中实现了这一点:

namespace ChrisJohnson00\ApiProfilerBundle\DependencyInjection;

...
class Configuration implements ConfigurationInterface
{
public function getConfigTreeBuilder()
{
    $treeBuilder = new TreeBuilder();
    $rootNode = $treeBuilder->root('chris_johnson00_api_profiler');

    $rootNode
        ->children()
            ->scalarNode('warning_threshold')
                ->info('Changes the warning threshold time (ms).  This is used to change the toolbar to yellow when the total response time is > this value')
                ->example("5000")
                ->defaultValue("5000")
                ->end()
            ->scalarNode('error_threshold')
                ->info('Changes the error threshold time (ms).  This is used to change the toolbar to red when the total response time is > this value')
                ->example("10000")
                ->defaultValue("10000")
                ->end()
        ->end()
    ;

    return $treeBuilder;
    }
}
但这并不能单独工作,我必须将以下内容添加到包扩展文件的加载函数中

namespace ChrisJohnson00\ApiProfilerBundle\DependencyInjection;

...
class ChrisJohnson00ApiProfilerExtension extends Extension
{

    public function load(array $configs, ContainerBuilder $container)
    {
        $configuration = new Configuration();
        $config        = $this->processConfiguration($configuration, $configs);

        $container->setParameter('chris_johnson00_api_profiler.warning_threshold', $config['warning_threshold']);
        $container->setParameter('chris_johnson00_api_profiler.error_threshold', $config['error_threshold']);

        $loader = new Loader\XmlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config'));
        $loader->load('services.xml');
    }
}

在扩展文件中不需要
$container->setParameter(…)
的情况下,如何配置捆绑包的配置参数

找到了一本有答案的食谱。。。看来我做得对。