Dans Symfony 2 lors de la définition d'un service, il est possible d'injecter des paramètres de configuration en les référençant avec des %parameter.name%
chaînes. Par exemple:
services:
app.mailer:
class: AppBundle\Mailer
arguments: ['%app.mailer.transport%']
Mais quelle est la bonne approche Drupal 8 pour injecter des valeurs de configuration dans les services? Bien sûr, je ne veux pas utiliser \Drupal::config()
dans une classe de service. Passer des valeurs de configuration chaque fois qu'un service est référencé n'a pas beaucoup de sens non plus.
Je sais que je peux injecter le service de configuration lui-même puis en obtenir des valeurs de configuration, mais cela semble un peu merdique car mon service lui-même sait lire les données du service de configuration. Par exemple:
# 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');
}
}
Y a-t-un autre moyen de faire ça?
@config.factory
service pour obtenir la configuration à partir du service de configuration. Cela est dû au fait que le service de configuration peut être remplacé et ne pas nécessairement obtenir ses valeurs de configuration au même endroit.