В Symfony 2 при определении службы можно вводить параметры конфигурации, ссылаясь на них со %parameter.name%
строками. Например:
services:
app.mailer:
class: AppBundle\Mailer
arguments: ['%app.mailer.transport%']
Но каков правильный подход Drupal 8 к внедрению значений конфигурации в сервисы? Конечно, я не хочу использовать \Drupal::config()
внутри класса обслуживания. Передача значений конфигурации каждый раз при обращении к услуге также не имеет особого смысла.
Я знаю, что могу внедрить сам сервис конфигурации, а затем получить от него значения конфигурации, но это выглядит немного глупо, так как сам мой сервис знает, как читать данные из сервиса конфигурации. Например:
# 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
службы для получения конфигурации из службы конфигурации. Это связано с тем, что служба конфигурации может быть переопределена и не обязательно получать свои значения конфигурации из того же места.