Передача дополнительных параметров в восемь точек / жрет класс клиента (Symfony 4) - PullRequest
0 голосов
/ 22 ноября 2018

В проекте Symfony 4 я использую пакет eightpoints/guzzle для вызовов удаленного API.После установки пакета (и настройки клиента в отдельном файле yaml) я следовал за это , чтобы сделать мой клиент автоматически подключенным, что прекрасно работает.Затем расширен мой клиентский класс (то есть класс, нисходящий от GuzzleHttp\Client, эквивалентного классу ApiPaymentClient в вышеприведенном руководстве) с некоторыми высокоуровневыми методами, которые заботятся о нужных мне вызовах, что также прекрасно работает.

Вопрос: есть ли способ заставить мой клиентский класс принимать дополнительные параметры?В частности, я хотел бы определить параметр в разделе parameters моего services.yaml, а затем привязать его к определенному дополнительному параметру в конструкторе класса клиента (который затем сохранит значение параметра в закрытой переменной для использования вметоды), т. е.

class MyClient extends GuzzleHttp\Client
{
    public function __construct($config, $apiKey)
    {
        parent::__construct($config);
        $this->apiKey = $apiKey;
    }
    /*...*/
}

Первоначально (т.е. как результат вышеупомянутого руководства) определение клиентского сервиса в services.yaml выглядит следующим образом:

App\Client\MyClient: '@eight_points_guzzle.client.my_client'

который гарантирует, что MyClient получит конфигурацию, определенную в разделе

eight_points_guzzle:
    clients:
        my_client:

в отдельном файле конфигурации пакета (eight_points_guzzle.yaml).

Как изменить службу App\Client\MyClientопределение, чтобы принять дополнительный параметр и все еще получить конфигурацию от eight_points_guzzle.yaml?До сих пор я справлялся с одной или другой работой, но не обоими (то есть выполнение привязки делает определение клиента из eight_points_guzzle.yaml не читаемым, и наоборот.)

Итог: да, я могуопределить параметр как класс const в классе MyClient, но мне не нравится это решение;не говоря уже о ситуации, мне однажды нужно будет передать услугу, а не просто переменную.

...