Dalam Symfony 2 saat mendefinisikan layanan, dimungkinkan untuk menyuntikkan parameter konfigurasi dengan %parameter.name%merujuknya dengan string. Sebagai contoh:
services:
app.mailer:
class: AppBundle\Mailer
arguments: ['%app.mailer.transport%']
Tapi apa pendekatan Drupal 8 yang benar untuk menyuntikkan nilai konfigurasi ke layanan? Tentu saja saya tidak ingin menggunakan \Drupal::config()di dalam kelas layanan. Melewati nilai konfigurasi setiap kali layanan direferensikan tidak masuk akal juga.
Saya tahu bahwa saya dapat menyuntikkan layanan konfigurasi itu sendiri dan kemudian mendapatkan nilai konfigurasi dari itu, tetapi itu terlihat sedikit jelek karena layanan saya sendiri sudah tahu cara membaca data dari layanan konfigurasi. Sebagai contoh:
# 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');
}
}
Apakah ada cara lain untuk melakukan hal ini?.
@config.factorylayanan untuk mendapatkan konfigurasi dari layanan konfigurasi. Ini karena layanan konfigurasi dapat diganti dan tidak perlu mendapatkan nilai konfigurasinya dari tempat yang sama.