No Symfony 2, ao definir um serviço, é possível injetar parâmetros de configuração referenciando-os com %parameter.name%
strings. Por exemplo:
services:
app.mailer:
class: AppBundle\Mailer
arguments: ['%app.mailer.transport%']
Mas qual é a abordagem correta do Drupal 8 para injetar valores de configuração nos serviços? Claro que não quero usar \Drupal::config()
dentro de uma classe de serviço. A passagem de valores de configuração sempre que um serviço é referenciado também não faz muito sentido.
Eu sei que posso injetar o próprio serviço de configuração e obter valores de configuração, mas isso parece um pouco ruim porque meu próprio serviço sabe ler dados do serviço de configuração. Por exemplo:
# 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');
}
}
Existe alguma outra maneira de fazer isso?
@config.factory
serviço para obter a configuração do serviço de configuração. Isso ocorre porque o serviço de configuração pode ser substituído e não necessariamente obtendo seus valores de configuração do mesmo local.