PHPackages                             icegloo24/soap-ext - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. icegloo24/soap-ext

ActiveLibrary

icegloo24/soap-ext
==================

1.1.09(3y ago)032[3 issues](https://github.com/Icegloo24/soap-ext/issues)PHPPHP ^7.0.0

Since Sep 6Pushed 2y ago1 watchersCompare

[ Source](https://github.com/Icegloo24/soap-ext)[ Packagist](https://packagist.org/packages/icegloo24/soap-ext)[ RSS](/packages/icegloo24-soap-ext/feed)WikiDiscussions main Synced today

READMEChangelog (2)Dependencies (2)Versions (12)Used By (0)

soap-ext
========

[](#soap-ext)

soap-ext is a library written in PHP that seeks to replace the PHP-Native SoapClient with a SoapClient consisting of a handfull of Middleware Components, which are replaceable.

The whole Client runs on a Middleware that is defined by Interfaces to enable the user to write New and replace specific Middleware-Components at will.

Requirements
============

[](#requirements)

7.0++ due to phpunit

How to Install
--------------

[](#how-to-install)

Install with [`composer.phar`](http://getcomposer.org).

```
composer require icegloo24/soap-ext
```

How to
======

[](#how-to)

Simple use case:
----------------

[](#simple-use-case)

```
use SoapExt\SoapClient;

$wsdl = "any existing wsdl";
$options = [];

$client = new SoapClient($wsdl, $options);

$input = new \SoapVar("foo", XSD_STRING, null, null, "bar", "https://foo.bar");

$client->__call($function, $input);

$result = $client->__getLastResponse();
```

Extended use case:
------------------

[](#extended-use-case)

```
use SoapExt\SoapClient;
use SoapExt\Middleware\Native\Cache;
use SoapExt\Middleware\Native\Curl;
use SoapExt\Middleware\Native\RequestAdjustment;
use SoapExt\Middleware\Native\RequestBuilder;
use SoapExt\Middleware\Native\SignatureMaker;
use SoapExt\Middleware\Native\WsdlLoader;

$wsdl = "any existing wsdl";
$options = [];
$middleware = [
  new Cache(),
  new Curl($options),
  new RequestAdjustment(),
  new RequestBuilder(),
  new SignatureMaker($loc_certificate, $loc_privkey),
  new WsdlLoader()
];

$client = new SoapClient($wsdl, $options, $middleware);

$input = new \SoapVar("foo", XSD_STRING, null, null, "bar", "https://foo.bar");

$client->__call($function, $input);

$result = $client->__getLastResponse();
```

Minimum configuration:
----------------------

[](#minimum-configuration)

This case will yield the created Request as Response! No loaded Wsdl, no Validation, no Signature and no Curl-calls. Just to check out what Request has been built and if it builds.

```
use SoapExt\SoapClient;
use SoapExt\Middleware\Native\RequestBuilder;

$wsdl = "any existing wsdl";
$options = [];
$middleware = [
  new RequestBuilder()
];

$client = new SoapClient($wsdl, $options, $middleware);

$input = new \SoapVar("foo", XSD_STRING, null, null, "bar", "https://foo.bar");

$client->__call($function, $input);

$result = $client->__getLastResponse();
```

Use your own Middleware
-----------------------

[](#use-your-own-middleware)

Just implement the *Interface* for the Middleware-Component you seek to write and append that to the Client.

Middleware
----------

[](#middleware)

#### CacheInterface

[](#cacheinterface)

- Handles the Caching of the Wsdl!

#### CurlInterface

[](#curlinterface)

- Contains all handling of curl actions on the SoapClient.

#### RequestBuilderInterface

[](#requestbuilderinterface)

- Required to convert the array-structure handed into the \_\_call() into a fully functional XML.

#### WsdlLoaderInterface

[](#wsdlloaderinterface)

- Download, Load and Save the Wsdl into the Cache.

#### RequestAdjustmentInterface

[](#requestadjustmentinterface)

- Placed before Validation and Signature it is perfectly located to adjust some changes to the XML that can not be resolved by SoapVar's.

#### ValidatorInterface

[](#validatorinterface)

- Validates the Request versus the Wsdl.

#### SignatureMakerInterface

[](#signaturemakerinterface)

- Required to apply a Signature to the Header of the SoapRequest.

Native Middleware
-----------------

[](#native-middleware)

#### Cache

[](#cache)

- Places cached Data in the usual /tmp Filesystem.
- Cache can be cleared via function.

#### Curl

[](#curl)

- Takes several Arguments and uses the native curl\_lib to execute.

#### RequestBuilder

[](#requestbuilder)

- Is creating the XML File with the use of DOMDocument.

#### WsdlLoader

[](#wsdlloader)

- Can download the wsdl or load from cache.

#### RequestAdjustment

[](#requestadjustment)

- This actually just prints the Request to Console/Browser.

#### Validator

[](#validator)

- Can validate ComplexTypes of Requests and the loose structure against the wsdl as well as Enumerations(SimpleTypes). Also included some Error handling!

#### SignatureMaker

[](#signaturemaker)

- Create a Signature with the use of [RobRichards XMLSecLibs](https://github.com/robrichards/xmlseclibs).

Todo:
-----

[](#todo)

- Soap Encoding - *(SOAP\_ENC\_ARRAY, XSD\_...) only SOAP\_ENC\_OBJECT and XSD\_STRING is supported yet*
- Improve Namespace Naming in RequestBuilder
- Replace $options-array with a SoapClientOptions-Class with setters and Documentation for further knowledge!

There are still many more things i need to complete for this library. Feel free to Start Issues and/or make Pull Request if you like to contribute. Mail me at  if you have questions etc. I try not to be lazy with that.

Versions
--------

[](#versions)

###  Health Score

24

—

LowBetter than 32% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity7

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity52

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~43 days

Recently: every ~71 days

Total

11

Last Release

1272d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/43bc7a9285a7440efc874cb61673e868b4ac793d53ac2831de900bffda3f322f?d=identicon)[Icegloo24](/maintainers/Icegloo24)

---

Top Contributors

[![Icegloo24](https://avatars.githubusercontent.com/u/46863264?v=4)](https://github.com/Icegloo24 "Icegloo24 (4 commits)")

---

Tags

middlewarephpsoapsoap-clientwsdl

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/icegloo24-soap-ext/health.svg)

```
[![Health](https://phpackages.com/badges/icegloo24-soap-ext/health.svg)](https://phpackages.com/packages/icegloo24-soap-ext)
```

###  Alternatives

[onelogin/php-saml

PHP SAML Toolkit

1.3k44.0M107](/packages/onelogin-php-saml)[litesaml/lightsaml

SAML 2.0 PHP library

1055.5M18](/packages/litesaml-lightsaml)[robrichards/wse-php

Libraries for adding WS-\* support to ext/soap in PHP.

1326.0M30](/packages/robrichards-wse-php)[salla/zatca

A helper to generate the QR code and signed it for ZATCA e-invoicing

159416.7k2](/packages/salla-zatca)[egroupware/egroupware

EGroupware extends a classic groupware with an integrated CRM-system, a secure file-server and Collabora Online Office.

2891.6k](/packages/egroupware-egroupware)[fr3d/xmldsig

Tool for easy management of XML Signatures (http://www.w3.org/TR/xmldsig-core/)

63150.6k1](/packages/fr3d-xmldsig)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
