An asynchronous SOAP client build on top of Guzzle. The SoapClient
implements meng-tian/php-async-soap.
PHP 7.1 --enablelibxml --enable-soap
composer require meng-tian/async-soap-guzzle
From v0.4.0 or newer, an instance of Psr\Http\Message\RequestFactoryInterface
and an instance of Psr\Http\Message\StreamFactoryInterface
need to be injected into Meng\AsyncSoap\Guzzle\Factory
. These two interfaces are defined in PSR-17 to create PSR-7 compliant HTTP instances. This change will decouple this library from any specific implementation of PSR-7 and PSR-17. Clients can determine which implementation of PSR-17 they want to use. Plenty of different implementations of PSR17 can be found from Packagist, e.g., symfony/psr-http-message-bridge
, or laminas/laminas-diactoros
.
- Require this library and an implementation of PSR-17 in your
composer.json
:
...
"require": {
"php": ">=7.1.0",
"meng-tian/async-soap-guzzle": "~0.4.0",
"laminas/laminas-diactoros": "^2.0" # this can be replaced by any implementation of PSR-17
},
...
-
Run
composer install
-
Create your async SOAP client and call your SOAP messages:
use GuzzleHttp\Client;
use Meng\AsyncSoap\Guzzle\Factory;
use Laminas\Diactoros\RequestFactory;
use Laminas\Diactoros\StreamFactory;
$factory = new Factory();
$client = $factory->create(new Client(), new StreamFactory(), new RequestFactory(), 'http://www.webservicex.net/Statistics.asmx?WSDL');
// async call
$promise = $client->callAsync('GetStatistics', [['X' => [1,2,3]]]);
$result = $promise->wait();
// sync call
$result = $client->call('GetStatistics', [['X' => [1,2,3]]]);
// magic method
$promise = $client->GetStatistics(['X' => [1,2,3]]);
$result = $promise->wait();
This library is released under MIT license.