在Symfony 2中,定义服务时,可以通过使用%parameter.name%
字符串引用配置参数来注入配置参数。例如:
services:
app.mailer:
class: AppBundle\Mailer
arguments: ['%app.mailer.transport%']
但是,将配置值注入服务的正确Drupal 8方法是什么?当然,我不想\Drupal::config()
在服务类中使用。每次引用服务时传递配置值也没有太大意义。
我知道我可以注入config服务本身,然后从中获取配置值,但是由于我的服务本身知道如何从配置服务中读取数据,因此这看起来有些cr脚。例如:
# Yaml service configuration
services:
app.mailer:
class: mail_module\Mailer
arguments: ['@config.factory']
的PHP
<?php
class Mailer {
public function __construct($config) {
$this->mailTransport = $config->get('mail.config')->get('transport');
}
}
还有其他方法吗?
@config.factory
服务从配置服务获取配置。这是因为配置服务可能会被覆盖,而不必从同一位置获取其配置值。