我在 Symfony2 中有一个需要ProductManager
服务的命令。
我向该服务传递了两个参数:Doctrine 的实体管理器和来自的配置数组app/config/config.yml
这是我services.xml
的捆绑包:
<service id="acme.product_manager" class="Acme\ApiBundle\ProductManager" public="true">
<argument>'@doctrine.orm.entity_manager'</argument>
<argument>"keys"</argument>
</service>
这是命令中的代码:
protected function execute(InputInterface $input, OutputInterface $output)
{
$productManager = $this->getProductManager();
}
public function getProductManager()
{
$em = $this->getContainer()->get('doctrine')->getManager();
$config = $this->getContainer()->getParameter('acme_api.config');
$keys = $config['keys']['beta_keys'];
$productManager = new ProductManager($em, $keys);
return $productManager;
}
中的配置app/config/config.yml
:
acme_api:
keys:
beta_keys:
app_key: "XXXXXX"
rest_api_key: "YYYYYY"
最后是服务构造函数:
public function __construct(EntityManager $em, $keys)
{
}
我认为实体管理器已正确注入服务,但是我对这个keys
论点有疑问。
是否也应该注入它(就像我现在正在做的那样),或者最好以某种方式从服务内部检索配置以避免每次实例化时将其作为参数传递?