In Symfony 2 durante la definizione di un servizio è possibile iniettare i parametri di configurazione facendo riferimento a questi con %parameter.name%
stringhe. Per esempio:
services:
app.mailer:
class: AppBundle\Mailer
arguments: ['%app.mailer.transport%']
Ma qual è l'approccio Drupal 8 corretto all'iniezione dei valori di configurazione nei servizi? Ovviamente non voglio usare \Drupal::config()
all'interno di una classe di servizio. Anche il passaggio di valori di configurazione ogni volta che viene fatto riferimento a un servizio non ha molto senso.
So che posso iniettare il servizio di configurazione stesso e quindi ottenere i valori di configurazione da esso, ma sembra un po 'scadente poiché il mio servizio stesso sa come leggere i dati dal servizio di configurazione. Per esempio:
# 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');
}
}
C'è un altro modo di fare questo?
@config.factory
servizio per ottenere la configurazione dal servizio di configurazione. Questo perché il servizio di configurazione potrebbe essere sovrascritto e non necessariamente ottenere i suoi valori di configurazione dalla stessa posizione.