Я хотел бы знать, возможно ли внедрить параметры службы в мою собственную службу, и если да, то как?
Позвольте мне представить вас в контексте.Я использую FOSFacebookBundle
, который загружает некоторую конфигурацию из файла config.yml
.Эти параметры конфигурации (например, мой Facebook app_id
, secret
, cookie
и т. Д.) Сохраняются с параметрами FOSFacebookBundle
с этим кодом:
// FOS\FacebookBundle\DependencyInjection\FOSFacebookExtension.php
foreach (array('file', 'app_id', 'secret', 'cookie', 'domain', 'logging', 'culture', 'permissions') as $attribute) {
$containerBuilder->setParameter('fos_facebook.'.$attribute, $config[$attribute]);
}
Я знаю, что возможнополучить эти параметры через $container
, выполнив:
$container->getParameter('fos_facebook.app_id');
Но я хотел бы знать, возможно ли внедрить эти параметры непосредственно в одно из моих определений сервиса.У меня есть одна служба под названием FacebookHelper
, которая нуждается в этой информации.Поэтому я хотел бы сделать что-то вроде:
acme.helper.facebook:
class: Application\AcmeBundle\Helper\FacebookHelper
arguments:
entityManager: "@doctrine.orm.entity_manager"
facebook: "@fos_facebook.api"
facebookAttributes:
- "@fos_facebook.app_id"
- "@fos_facebook.secret"
- "@fos_facebook.cookie"
Конечно, этот синтаксис не работает, потому что Symfony ищет сервис с именем fos_facebook.app_id
, который не существует.
Я ищу решение, которое бы позволило не вводить контейнер непосредственно в мой сервис.Либо с помощью прямого определения в моем файле services.yml
, либо с помощью расширения DI моего пакета, которое должно было бы выполнить определенную работу по определению моей пользовательской службы, извлечь параметры из FOSFacebookBundle
и вставить их в него.
С уважением,
Мэтт