从Service访问Symfony参数

时间:2017-08-24 06:22:54

标签: php symfony service parameters

我写了一个服务,它使用guzzle向另一个网站发出请求。 guzzle参数(URL,标题等)必须是可配置的,因此我将它们存储在app/config/parameters.yml

但是由于服务无法访问容器,我该如何检索参数?

1 个答案:

答案 0 :(得分:1)

  1. 如果您不想将许多参数传递给构造函数,
  2. a)您可以将许多参数作为数组传递。

    parameters:
        my_params:
             foo: bar
             baz: 1
    
    services:
        app.my_service:
        class: \yourservice\
        arguments:
            - '%my_params%'
    

    b)你可以使用setter

    services:
        app.my_service:
            class: \yourservice\
            calls:
                - [setParameterA, ['%first_param%']]
                - [setParameterB, ['%second_param%']]
                - ...    
    
    1. 对于您的情况,最好使用给定的参数从Factory创建Guzzle客户端。您可以定义许多不同的客户端,并将特定的客户端注入您的服务。
    2. `

      services:
          app.client_factory:
              class: AppBundle\Service\ClientFactory
      
          app.some_client:
              class: GuzzleHttp\Client
              factory: 'app.client_factory:create'
              arguments:
                  - []
                  -
                    base_uri: '%url%/%version%'
                    headers:
                        User-Agent: 'MyAgent 0.1'
                        Accept: 'application/json'
                        content-type: 'application/json'
                  - ~
      
          app.my_service:
              class: \yourservice\
              arguments:
                  - '@app.some_client'