phpro/soap-client
A general purpose SoapClient library
6.2.0
6.3M downloads/mo
#2268 most downloaded on Packagist
phpro/soap-client
What this package is like to depend on
Last release 2 months ago
29 May 2026
Release timing varies
gaps range from 2 weeks to 7 months
Rarely documented
notes for 8 of 84 stable releases
Nothing withdrawn
no release was ever pulled
11 years old
92 releases · first in 2015
13 releases in the last 12 months
see the full history below
Release timeline
90 releases · Jul 2015 to May 2026Releases
latest 60 of 92-
6.2.029 May 2026 -
6.1.028 May 2026Release notes
Open source →What's Changed
- GenConfigCommand - print wsdl loading exceptions when output is verbose by @YasserB94 in #610
New Contributors
- @YasserB94 made their first contribution in #610
Full Changelog: 6.0.0...6.0.1
-
6.0.027 Mar 2026Release notes
Open source →What's changed
- PHP 8.4 is now the minimum required version (PHP 8.3 support dropped)
- Replaced monolithic
php-standard-library/php-standard-librarywith standalone packages (^6.1) - Updated all php-soap packages to their latest versions
- Removed the monolithic PSL package entirely from the dependency tree
Dependency changes
Package v5 v6 php ~8.3.0 || ~8.4.0 || ~8.5.0 ~8.4.0 || ~8.5.0 php-standard-library monolithic ^3-6 standalone packages ^6.1 php-soap/cached-engine ~0.6 ~0.8 php-soap/encoding ~0.28 ~0.32 php-soap/engine ^2.19 ^2.20 php-soap/psr18-transport ^1.7 ^2.0 php-soap/wsdl-reader ~0.31 ~0.32 Breaking changes
PHP 8.4 minimum
PHP 8.3 is no longer supported. Upgrade to PHP 8.4+ before updating.
php-soap/psr18-transport 2.0 (from 1.x)
The biggest user-facing change. All DOM types migrated to PHP 8.4's modern DOM API:
DOMDocument->Dom\XMLDocumentDOMElement->Dom\ElementDOMNode->Dom\Node
If you wrote custom middleware or manipulators that touch DOM objects, you need to update:
// Before (v5): use Soap\Psr18Transport\Xml\XmlMessageManipulator; $manipulator = new XmlMessageManipulator(function (\DOMDocument $dom): void { // ... }); // After (v6): $manipulator = new XmlMessageManipulator(function (\Dom\XMLDocument $dom): void { // ... });
// Before (v5): $middleware = new SoapHeaderMiddleware(fn(\DOMNode $node): \DOMElement => /* ... */); // After (v6): $middleware = new SoapHeaderMiddleware(fn(\Dom\Node $node): \Dom\Element => /* ... */);
php-soap/encoding 0.32 (from 0.31)
Element::fromDOMElement()andElement::element()now accept/returnDom\Elementinstead ofDOMElement- All decoder/encoder type hints use
Dom\namespace equivalents - Attribute methods return
nullfor missing values (previously empty strings)
php-soap/wsdl-reader 0.32 (from 0.31)
- If upgrading from <0.29: regenerate types if your webservice uses anonymous complexTypes
PSL standalone packages
The monolithic
php-standard-library/php-standard-libraryhas been replaced with standalone packages:php-standard-library/dict php-standard-library/foundation php-standard-library/iter php-standard-library/option php-standard-library/result php-standard-library/str php-standard-library/type php-standard-library/vecThis should not affect end users unless you depend on PSL classes being available transitively.
Upgrade steps
- Ensure you're running PHP 8.4+
- Update
composer.json:composer require phpro/soap-client:^6.0 - Search your codebase for
DOMDocument,DOMElement,DOMNodeusage in SOAP middleware/manipulators and migrate toDom\XMLDocument,Dom\Element,Dom\Node - If using php-soap/encoding directly: update any
Element::fromDOMElement()calls
What's Changed
Full Changelog: 5.0.0...6.0.0
-
5.0.019 Mar 2026Release notes
Open source →V5 overhauls the code generation configuration system with proper value objects, introduces XML namespace-aware type mapping, customizable coding standards, and improved default value handling for generated code.
Upgrading
composer require 'phpro/soap-client:^5.0.0-beta1@beta' --update-with-dependenciesYou'll need to update your code generation configuration file.
For a step-by-step plan, you can follow the instructions at:https://github.com/phpro/soap-client/blob/v5.x/UPGRADING.md#v4-to-v5
What's new
Configuration overhaul
The
Configclass no longer uses individual string setters. Instead, dedicated value objects —Destination,ClientConfig,ClassMapConfig, andTypeNamespaceMap— replace the oldsetTypeNamespace(),setTypeDestination(),setClientName(), etc. methods. TheConfigInterfacehas been removed.TypeNamespaceMap: XML namespace-aware type mapping
A new
TypeNamespaceMapallows you to map XML namespaces (xmlns) to specific PHP namespace destinations. This is useful when a WSDL defines types across multiple XML namespaces and you want to organize them into separate directories.You can use explicit
withMapping()calls, a built-inPrefixBasedTypeNamespaceStrategyfor automatic resolution, or combine both. Thegenerate:configcommand now detects xmlns namespaces from your WSDL and suggests mappings in the generated config.Duplicate type strategies (
IntersectDuplicateTypesStrategyandRemoveDuplicateTypesStrategy) are now namespace-aware — types that map to different PHP namespaces are no longer considered duplicates.Coding standards strategy
A new
CodingStandardsStrategyInterfacelets you customize naming conventions for all generated code. By default,DefaultCodingStandardsStrategyis used, which matches existing behavior — no changes required for existing users.Configure it via
Config::setCodingStandards(). Context classes (TypeContext,PropertyContext,ClientMethodContext,ClassMapContext) now requireCodeGeneratorContextas an additional constructor parameter.Propertygains new convenience methodsmethodName()andparameterName()that use the configured coding standards.Constructor and property default values
The old
PropertyDefaultsAssemblerhas been removed. Its functionality is now built intoPropertyAssemblerandConstructorAssemblervia a newDefaultValuesStrategyenum:OptionalOnly(new default) — Only nullable/optional properties get= nullAll(previous default) — All scalars get zero-value defaultsNone— No defaults applied
What's Changed
- Make it possible to configure a mapping of type namespaces based on xmlns by @veewee in #599
- Introduce DefaultValuesStrategy for constructor & property defaults by @veewee in #601
- Introduce CodingStandardsStrategy for customizable naming conventions by @veewee in #602
- feat: add support for azjezz/[email protected] by @EJTJ3 in #603
- feat: replace azjezz/psl with php-standard-library/php-standard-library by @veewee in #606
Full Changelog: 4.6.0...5.0.0
-
5.0.0-beta211 Mar 2026 pre-releaseRelease notes
Open source →What's Changed
- feat: add support for azjezz/[email protected] by @EJTJ3 in #603
Full Changelog: 5.0.0-beta1...5.0.0-beta2
-
5.0.0-beta127 Feb 2026 pre-releaseRelease notes
Open source →❗ This pre-release is experimental ❗
V5 overhauls the code generation configuration system with proper value objects, introduces XML namespace-aware type mapping, customizable coding standards, and improved default value handling for generated code.
We decided to pre-launch at this point in order to get some feedback from you.
Feel free to play around with it and give us feedback!Upgrading
composer require 'phpro/soap-client:^5.0.0-beta1@beta' --update-with-dependenciesYou'll need to update your code generation configuration file.
For a step-by-step plan, you can follow the instructions at:https://github.com/phpro/soap-client/blob/v5.x/UPGRADING.md#v4-to-v5
What's new
Configuration overhaul
The
Configclass no longer uses individual string setters. Instead, dedicated value objects —Destination,ClientConfig,ClassMapConfig, andTypeNamespaceMap— replace the oldsetTypeNamespace(),setTypeDestination(),setClientName(), etc. methods. TheConfigInterfacehas been removed.TypeNamespaceMap: XML namespace-aware type mapping
A new
TypeNamespaceMapallows you to map XML namespaces (xmlns) to specific PHP namespace destinations. This is useful when a WSDL defines types across multiple XML namespaces and you want to organize them into separate directories.You can use explicit
withMapping()calls, a built-inPrefixBasedTypeNamespaceStrategyfor automatic resolution, or combine both. Thegenerate:configcommand now detects xmlns namespaces from your WSDL and suggests mappings in the generated config.Duplicate type strategies (
IntersectDuplicateTypesStrategyandRemoveDuplicateTypesStrategy) are now namespace-aware — types that map to different PHP namespaces are no longer considered duplicates.Coding standards strategy
A new
CodingStandardsStrategyInterfacelets you customize naming conventions for all generated code. By default,DefaultCodingStandardsStrategyis used, which matches existing behavior — no changes required for existing users.Configure it via
Config::setCodingStandards(). Context classes (TypeContext,PropertyContext,ClientMethodContext,ClassMapContext) now requireCodeGeneratorContextas an additional constructor parameter.Propertygains new convenience methodsmethodName()andparameterName()that use the configured coding standards.Constructor and property default values
The old
PropertyDefaultsAssemblerhas been removed. Its functionality is now built intoPropertyAssemblerandConstructorAssemblervia a newDefaultValuesStrategyenum:OptionalOnly(new default) — Only nullable/optional properties get= nullAll(previous default) — All scalars get zero-value defaultsNone— No defaults applied
What's Changed
- Introduce TypeNamespaceMap strategy system by @veewee in #599
- Introduce constructor & property default values with ScalarDefaultProvider by @veewee in #601
- Introduce CodingStandardsStrategy for customizable naming conventions by @veewee in #602
Full Changelog: 4.6.0...5.0.0-beta1
-
4.8.019 Mar 2026 -
4.7.011 Mar 2026Release notes
Open source →What's Changed
- feat: add support for azjezz/[email protected] by @EJTJ3 in #603
Full Changelog: 4.6.0...4.7.0
-
4.6.028 Jan 2026 -
4.5.005 Nov 2025Release notes
Open source →What's Changed
- Update ClientConstructorAssembler to use type instead of phpdoc by @ayrtonandino in #595
New Contributors
- @ayrtonandino made their first contribution in #595
Full Changelog: 4.4.1...4.5.0
-
4.4.123 Oct 2025Nothing published for this version
-
4.4.023 Oct 2025Nothing published for this version
-
4.3.021 Oct 2025Nothing published for this version
-
4.2.028 Mar 2025Nothing published for this version
-
4.1.130 Jan 2025Nothing published for this version
-
4.1.010 Jan 2025Nothing published for this version
-
4.0.003 Jan 2025Nothing published for this version
-
4.0.0-alpha5no date pre-releaseNothing published for this version
-
4.0.0-alpha419 Dec 2024 pre-releaseNothing published for this version
-
4.0.0-alpha325 Oct 2024 pre-releaseNothing published for this version
-
4.0.0-alpha227 Sep 2024 pre-releaseNothing published for this version
-
4.0.0-alpha112 Jun 2024 pre-releaseNothing published for this version
-
3.4.130 Jan 2025Nothing published for this version
-
3.4.025 Oct 2024Nothing published for this version
-
3.3.021 May 2024Nothing published for this version
-
3.2.026 Apr 2024Nothing published for this version
-
3.1.202 Apr 2024Nothing published for this version
-
3.1.121 Dec 2023Nothing published for this version
-
3.1.024 Nov 2023Nothing published for this version
-
3.0.029 Sep 2023Nothing published for this version
-
3.0.0-alpha128 Apr 2023 pre-releaseNothing published for this version
-
2.4.207 Jun 2023Nothing published for this version
-
2.4.126 May 2023Nothing published for this version
-
2.4.014 Feb 2023Nothing published for this version
-
2.3.008 Dec 2022Nothing published for this version
-
v2.2.117 May 2022Nothing published for this version
-
v2.2.025 Mar 2022Nothing published for this version
-
v2.1.006 Jan 2022Nothing published for this version
-
v2.0.024 Sep 2021Nothing published for this version
-
v1.7.417 May 2022Nothing published for this version
-
v1.7.301 Feb 2022Nothing published for this version
-
v1.7.207 Jan 2022Nothing published for this version
-
v1.7.126 Nov 2021Nothing published for this version
-
v1.7.014 Jul 2021Nothing published for this version
-
v1.6.014 May 2021Nothing published for this version
-
v1.5.030 Apr 2021Nothing published for this version
-
v1.4.118 Dec 2020Nothing published for this version
-
v1.4.027 Nov 2020Nothing published for this version
-
v1.3.227 Nov 2020Nothing published for this version
-
v1.3.125 Sep 2020Nothing published for this version
-
v1.3.015 Jul 2020Nothing published for this version
-
v1.2.029 May 2020Nothing published for this version
-
v1.1.307 Apr 2020Nothing published for this version
-
v1.1.220 Jan 2020Nothing published for this version
-
v1.1.109 Jan 2020Nothing published for this version
-
v1.1.020 Dec 2019Nothing published for this version
-
v1.0.525 Oct 2019Nothing published for this version
-
v1.0.414 Oct 2019Nothing published for this version
-
v1.0.321 May 2019Nothing published for this version
-
1.0.210 May 2019Nothing published for this version