In Symfony 2 können beim Definieren eines Dienstes Konfigurationsparameter eingefügt werden, indem auf sie mit %parameter.name%Zeichenfolgen verwiesen wird. Zum Beispiel:
services:
app.mailer:
class: AppBundle\Mailer
arguments: ['%app.mailer.transport%']
Aber was ist der richtige Drupal 8-Ansatz, um Konfigurationswerte in Dienste einzufügen? Natürlich möchte ich nicht \Drupal::config()innerhalb einer Serviceklasse verwenden. Das Übergeben von Konfigurationswerten bei jeder Referenzierung eines Dienstes ist ebenfalls wenig sinnvoll.
Ich weiß, dass ich den Konfigurationsdienst selbst einspeisen und dann Konfigurationswerte von ihm abrufen kann, aber das sieht ein bisschen beschissen aus, da mein Dienst selbst weiß, wie man Daten vom Konfigurationsdienst liest. Zum Beispiel:
# 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');
}
}
Gibt es eine andere Möglichkeit, dies zu tun?
@config.factoryDienst zu verwenden, um die Konfiguration vom Konfigurationsdienst abzurufen. Dies liegt daran, dass der Konfigurationsdienst möglicherweise überschrieben wird und seine Konfigurationswerte nicht unbedingt von derselben Stelle abgerufen werden.