Symfony 3 - 如何从配置到服务正确方式注入自己的变量?

时间:2017-05-25 15:39:28

标签: symfony service config

我想在我的网站上创建具有不同缓存值的缓存配置。我有一个工作的例子:

// config.yml
parameters:
    myValue:
        first: 1
        second: 2

// services.yml
my_repo:
    class:  AppBundle\Repository\MyRepository
    factory: ["@doctrine.orm.entity_manager", getRepository]
    arguments:
        - 'AppBundle\Entity\My'
    calls:
        - [setValue, ["%myValue%"]]

// MyRepository.php
public function setValue($val) {
    $this->first = $val['first'];
}

// Inside controller method
$someVariable = $this->get('my_repo')
    ->someOtherFunction();

但这样做是否正确?如果另一个程序员将​​调用存储库'standart'方式$em->getRepository('MyRepository')怎么办?它将在udefined变量上崩溃...有没有办法通过构造函数来做到这一点?或者构造函数是个坏主意?

我对你的练习感兴趣 - 更好的解决方案等。

1 个答案:

答案 0 :(得分:0)

这样的东西
 [setValue, ["@=container.hasParameter('myValue') ? parameter('myValue') : array()"]]

应该做的伎俩。然后,如果注入的变量是空的,请检查您的服务。有关表达式语言的更多信息,请参阅the doc