Я надеюсь, что это легко.
у меня есть Client
класс, который расширяется \SoapClient
(Я использую собственный клиент, потому что хочу регистрировать каждый вызов мыла):
<?php
namespace App\Soap\Client;
class Client extends \SoapClient
{
/**
* @var ClientLogger
*/
private $logger;
/**
* Client constructor.
* @param $wsdl
* @param array|null $options
* @param ClientLogger $logger
*/
public function __construct($wsdl, array $options = [], ClientLogger $logger)
{
parent::__construct($wsdl, $options);
$this->logger = $logger;
}
...
Это прекрасно работает, но есть проблема.
Этот клиент, в случае сбоя, не выбрасывает \SoapFault
или любой Exception
,
Единственный способ, который я нашел, это сделать:
public function __construct($wsdl, array $options = [], ClientLogger $logger)
{
try {
new \SoapClient($wsdl, $options);
parent::__construct($wsdl, $options);
$this->logger = $logger;
} catch (\SoapFault $e){
...
}
}
таким образом, в случае сбоя соединения, \SoapFault
брошен
Я думаю, что есть лучший способ.
Есть идеи? Заранее спасибо!
Задача ещё не решена.
Других решений пока нет …