【问题标题】:Symfony 3 - How inject own variable from config to service right way?Symfony 3 - 如何以正确的方式将自己的变量从配置注入服务?
【发布时间】:2017-05-25 15:39:28
【问题描述】:

我想在我的网络上创建具有不同缓存值的缓存配置。我有工作示例:

// 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();

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

我对您的做法感兴趣 - 更好的解决方案等。

【问题讨论】:

  • 为什么要将此存储库作为服务?为什么不创建一个服务并将实体管理器传递给它?
  • 因为我想要一个配置文件,我将在其中拥有配置值,例如缓存、最大结果、最大显示类别等...并且只能从控制器访问此配置,而不是从存储库访问。
  • 我觉得最好做一个存储服务,比如MessageStorage,让它来管理检索数据和缓存、分页等...

标签: symfony service config


【解决方案1】:

类似

 [setValue, ["@=container.hasParameter('myValue') ? parameter('myValue') : array()"]]

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-01
    • 1970-01-01
    • 2017-10-15
    • 2018-12-03
    • 1970-01-01
    • 2014-12-02
    相关资源
    最近更新 更多