Simple, async SOAP webservice client, built on top of ReactPHP.
MIT License
Feature / BC break: Update to reactphp/http v1.0.0.
(#45 by @SimonFrings)
Feature / BC break: Add type declarations and require PHP 7.1+ as a consequence
(#47 by @SimonFrings, #49 by @clue)
Use fully qualified class names in documentation.
(#46 by @SimonFrings)
Improve test suite and add .gitattributes
to exclude dev files from export.
Prepare PHP 8 support, update to PHPUnit 9 and simplify test matrix.
(#40 by @andreybolonin, #42 and #44 by @SimonFrings and #48 by @clue)
First stable release, now following SemVer!
I'd like to thank Bergfreunde GmbH, a German-based
online retailer for Outdoor Gear & Clothing, for sponsoring large parts of this development! 🎉
Thanks to sponsors like this, who understand the importance of open source
development, I can justify spending time and focus on open source development
instead of traditional paid work.
Did you know that I offer custom development services and issuing invoices for
sponsorships of releases and for contributions? Contact me (@clue) for details.
BC break / Feature: Replace Factory
with simplified Client
constructor,
add support for optional SOAP options and non-WSDL mode and
respect WSDL type definitions when decoding and support classmap option.
(#31, #32 and #33 by @clue)
// old
$factory = new Factory($loop);
$client = $factory->createClientFromWsdl($wsdl);
// new
$browser = new Browser($loop);
$client = new Client($browser, $wsdl);
The Client
constructor now accepts an array of options. All given options will
be passed through to the underlying SoapClient
. However, not all options
make sense in this async implementation and as such may not have the desired
effect. See also SoapClient
documentation for more details.
If working in WSDL mode, the $options
parameter is optional. If working in
non-WSDL mode, the WSDL parameter must be set to null
and the options
parameter must contain the location
and uri
options, where location
is
the URL of the SOAP server to send the request to, and uri
is the target
namespace of the SOAP service:
$client = new Client($browser, null, array(
'location' => 'http://example.com',
'uri' => 'http://ping.example.com',
));
BC break: Mark all classes as final and all internal APIs as @internal
.
(#26 and #37 by @clue)
Feature: Add new Client::withLocation()
method.
(#38 by @floriansimon1, @pascal-hofmann and @clue)
The withLocation(string $location): self
method can be used to
return a new Client
with the updated location (URI) for all functions.
Note that this is not to be confused with the WSDL file location.
A WSDL file can contain any number of function definitions.
It's very common that all of these functions use the same location definition.
However, technically each function can potentially use a different location.
$client = $client->withLocation('http://example.com/soap');
assert('http://example.com/soap' === $client->getLocation('echo'));
As an alternative to this method, you can also set the location
option
in the Client
constructor (such as when in non-WSDL mode).
Feature: Properly handle SOAP error responses, accept HTTP error responses and do not follow any HTTP redirects.
(#35 by @clue)
Improve documentation and update project homepage,
documentation for HTTP proxy servers,
support timeouts for SOAP requests (HTTP timeout option) and
add cancellation support.
(#25, #29, #30 #34 and #36 by @clue)
Improve test suite by supporting PHPUnit 6,
optionally skip functional integration tests requiring internet and
test against PHP 7.2 and PHP 7.1 and latest ReactPHP components.
(#24 by @carusogabriel and #27 and #28 by @clue)
Feature: Added the possibility to use local WSDL files
(#11 by @floriansimon1)
$factory = new Factory($loop);
$wsdl = file_get_contents('service.wsdl');
$client = $factory->createClientFromWsdl($wsdl);
Feature: Add Client::getLocation()
helper
(#13 by @clue)
Feature: Forward compatibility with clue/buzz-react v2.0 and upcoming EventLoop
(#9 by @floriansimon1 and #19 and #21 by @clue)
Improve test suite by adding PHPUnit to require-dev and
test PHP 5.3 through PHP 7.0 and HHVM and
fix Travis build config
(#1 by @WyriHaximus and #12, #17 and #22 by @clue)