Trong Symfony 2 khi xác định dịch vụ, có thể đưa các tham số cấu hình bằng cách tham chiếu chúng với các %parameter.name%
chuỗi. Ví dụ:
services:
app.mailer:
class: AppBundle\Mailer
arguments: ['%app.mailer.transport%']
Nhưng cách tiếp cận Drupal 8 chính xác để tiêm các giá trị cấu hình vào các dịch vụ là gì? Tất nhiên tôi không muốn sử dụng \Drupal::config()
bên trong một lớp dịch vụ. Truyền các giá trị cấu hình mỗi khi một dịch vụ được tham chiếu cũng không có ý nghĩa nhiều.
Tôi biết rằng tôi có thể tự tiêm dịch vụ cấu hình và sau đó nhận các giá trị cấu hình từ nó, nhưng điều đó có vẻ hơi nhảm nhí vì bản thân dịch vụ của tôi đã biết cách đọc dữ liệu từ dịch vụ cấu hình. Ví dụ:
# 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ó cách nào khác để làm điều này?
@config.factory
dịch vụ để lấy cấu hình từ dịch vụ cấu hình. Điều này là do dịch vụ cấu hình có thể bị ghi đè và không nhất thiết phải nhận các giá trị cấu hình từ cùng một nơi.