IMO, вы должны создать другой класс, который должен возвращать вам Api
объект, правильно настроенный для связи.
Таким образом, этот сервис принимает 3 параметра скаляров (или ваш конфигурационный массив)
Вы должны определить его следующим образом
app.ovh_connection:
class: Ce\UtilisateurBundle\Services\OvhConnection
arguments:
$applicationKey: '%application_key%'
$applicationSecret: '%application_secret%'
$consumerKey: '%consumer_key%'
Класс, обрабатывающий соединение, выглядит следующим образом
class OvhConnection {
private $applicationKey;
private $applicationSecret;
private $consumerKey;
constructor($applicationKey, $applicationSecret, $consumerKey) {
$this->applicationKey = $applicationKey;
$this->applicationSecret = $applicationSecret;
$this->consumerKey = $consumerKey;
}
public function getConnection($endpoint) {
return new Api(
$this->applicationKey,
$this->applicationSecret,
$endPoint,
$this->consumerKey
);
}
}
Довольно просто, поэтому часть соединения обрабатывается только здесь.Если вы хотите использовать другой сервис этого API (например, отправку электронной почты), вам просто нужно использовать этот класс.
Затем вам нужно адаптировать свой класс SmsProvider для извлечения соединения из вашего нового класса
class SmsProvider
{
/** @var OvhConnection */
private $connection;
/** @var LoggerInterface */
private $logger;
public function __construct(OvhConnection $connection, LoggerInterface $logger)
{
$this->connection = $connection;
$this->logger = $logger;
}
// Call $this->connection->getConnection('your_endpoint'); to retrieve an OvhConnection configured
}
Наконец, вам нужно обновить определение SmsProvider
таким образом
app.sms.provider:
class: Ce\UtilisateurBundle\Services\SmsProvider
arguments: ['@app.ovh_connection', '@logger']
public: true