En Symfony 2, al definir un servicio, es posible inyectar parámetros de configuración haciendo referencia a ellos con %parameter.name%
cadenas. Por ejemplo:
services:
app.mailer:
class: AppBundle\Mailer
arguments: ['%app.mailer.transport%']
Pero, ¿cuál es el enfoque correcto de Drupal 8 para inyectar valores de configuración en los servicios? Por supuesto que no quiero usar \Drupal::config()
dentro de una clase de servicio. Pasar valores de configuración cada vez que se hace referencia a un servicio tampoco tiene mucho sentido.
Sé que puedo inyectar el servicio de configuración en sí y luego obtener los valores de configuración, pero eso parece un poco malo ya que mi servicio en sí mismo sabe cómo leer datos del servicio de configuración. Por ejemplo:
# 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');
}
}
Hay alguna otra manera de hacer esto?
@config.factory
servicio para obtener la configuración del servicio de configuración. Esto se debe a que el servicio de configuración podría anularse y no necesariamente obtener sus valores de configuración desde el mismo lugar.