我想知道是否可以在我自己的服務中注入服務的參數,如果是,如何?在我自己的服務中注入其他服務的參數
讓我把你放在上下文中。我正在使用從config.yml
文件加載一些配置的FOSFacebookBundle
。這些配置設置(如我的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
中檢索參數並將它們注入到其中。
問候,
馬特