Symfony中的DependencyInjection

时间:2017-11-21 10:53:58

标签: php symfony dependency-injection

当我们创建一个包' MyBundle'在symfony中使用控制台,它会生成类 我们在这个类中的MyBundleExtension.php找到了一个方法' load'

public function load(array $configs, ContainerBuilder $container)
{
    $configuration = new Configuration();
    $config = $this->processConfiguration($configuration, $configs);    
    $loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
    $loader->load('services.yml');
}

当我转储参数$ configs时,结果是数组内的空数组

从哪里注入此参数,如何为此参数添加值?

2 个答案:

答案 0 :(得分:2)

正如Mert Simsek所说,您可以通过在app / config / config.yml中添加配置来配置您的捆绑包

您的捆绑包有一个用于收集此配置的密钥。默认情况下,使用带有此函数的包名称获取此键

\Symfony\Component\DependencyInjection\Extension\Extension::getAlias

但您可以覆盖此功能以在扩展程序中定义自定义键。

默认情况下(来自getAlias函数的文档),别名就像这样创建

* This convention is to remove the "Extension" postfix from the class
* name and then lowercase and underscore the result

所以在你的情况下只是"我的"。如果你想为这个包添加配置,你的yml配置将如下所示:

my:
    some_config: value
    set_of_configs:
       config1: value1
       config2: value2

在load方法$ configs中执行此操作后,您将获得一个数组。您可以使用预定义的类"配置"验证这个配置。您可以在Symfony Doc中找到有关捆绑配置的更多信息:

https://symfony.com/doc/current/components/config/definition.html

希望这有帮助,

Alexandru Cosoi

答案 1 :(得分:0)

您应该将变量添加到app/config/config.yml文件中。