在Symfony 3.4应用程序中定义服务定义参数的正确方法是什么

时间:2018-10-25 02:09:31

标签: php symfony yaml symfony-3.4

在Symfony 3.4应用程序中定义服务定义参数的正确方法是什么?

我注意到以下所有内容均有效:

AppBundle\Services\RFC\Spackman:
    arguments:
        $watpSdk: '@watp.client'
    calls:
        - [setPlayerName, ['%p_name%']]

AppBundle\Services\RFC\Gordon:
    $client: '@crmpicco.client'

zendesk.client:
    class: Zendesk\API\HttpClient
    arguments:
       - '%zendesk_subdomain%'

官方文档是这样说的,但是我不确定什么是正确的标准:

  

3.3版中的新增功能:可以通过名称配置参数的功能   ($ adminEmail)已在Symfony 3.3中添加。以前,您可以   仅通过其索引(在这种情况下为2)或使用空配置它   其他引号。

1 个答案:

答案 0 :(得分:1)

  • 使用连字符时,它会将参数输入到 服务的构造函数/工厂。
  • 使用“ $ argname”时,它 根据构造函数/工厂的名称输入参数 参数。
  • 您还可以使用“ index_#”通过以下方式提供参数 具体索引。

其中任何一个都是正确的方法。我更喜欢使用连字符,因为如果有朝一日重构参数的名称,则也不必在配置中重构它。

当我需要扩展服务定义并替换父服务中定义的参数之一时,我也会使用“ index _#”。

这是一个品味问题,因为可以完全忽略服务扩展。