【问题标题】:What is the correct way to define service definition arguments in a Symfony 3.4 application在 Symfony 3.4 应用程序中定义服务定义参数的正确方法是什么
【发布时间】:2019-03-29 12:54:41
【问题描述】:

在 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)或使用空来配置它 其他参数的引号。

【问题讨论】:

    标签: php symfony yaml symfony-3.4


    【解决方案1】:
    • 当您使用连字符时,它会将参数提供给 您的服务的构造函数/工厂。
    • 当您使用“$argname”时,它 根据构造函数/工厂的名称提供参数 范围。
    • 您还可以使用“index_#”来提供参数 具体索引。

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

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

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

    【讨论】:

    • 感谢您的回答。至少使用arguments 是有意义的,因为如果您需要使用tags 或其他字段,那么arguments 将成为强制性的。
    • 很高兴我能帮上忙。
    猜你喜欢
    • 1970-01-01
    • 2016-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多