icegloo24/soap-ext

此软件包最新版本(1.1.09)没有可用的许可信息。

1.1.09 2022-11-16 09:37 UTC

This package is auto-updated.

Last update: 2024-09-26 11:54:44 UTC


README

soap-ext是一个用PHP编写的库,旨在用由少量可替换的中间件组件组成的SoapClient替换PHP-Native SoapClient。

整个客户端在由接口定义的中间件上运行,以便用户可以随意编写新的和替换特定的中间件组件。

需求

由于phpunit,需要7.0++

如何安装

使用composer.phar进行安装。

composer require icegloo24/soap-ext

如何使用

简单用例

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();

扩展用例

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();

最小配置

此用例将产生创建的请求作为响应!没有加载Wsdl,没有验证,没有签名和没有Curl调用。只是为了检查构建了什么请求以及它是否构建。

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();

使用您自己的中间件

只需实现您想要编写的中间件组件的接口,并将其附加到客户端。

中间件

CacheInterface

  • 处理Wsdl的缓存!

CurlInterface

  • 包含对SoapClient上的curl操作的 所有处理。

RequestBuilderInterface

  • 必需的,将传递给__call()的数组结构转换为完整的XML。

WsdlLoaderInterface

  • 下载、加载和将Wsdl保存到缓存中。

RequestAdjustmentInterface

  • 放置在验证和签名之前,非常适合调整无法由SoapVar解决的XML的一些更改。

ValidatorInterface

  • 验证请求与Wsdl的一致性。

SignatureMakerInterface

  • 必需的,以在SoapRequest的头部应用签名。

本地中间件

Cache

  • 将缓存数据放在常用的/tmp文件系统中。
  • 可以通过函数清除缓存。

Curl

  • 接受多个参数并使用本机的curl_lib执行。

RequestBuilder

  • 使用DOMDocument创建XML文件。

WsdlLoader

  • 可以下载wsdl或从缓存加载。

RequestAdjustment

  • 实际上只是在控制台/浏览器中打印请求。

Validator

  • 可以验证请求的ComplexTypes和与wsdl的松散结构以及枚举(SimpleTypes)。还包括一些错误处理!

SignatureMaker

待办事项

  • Soap编码 - (SOAP_ENC_ARRAY,XSD_...)目前只支持SOAP_ENC_OBJECT和XSD_STRING
  • 改进RequestBuilder中的命名空间命名
  • 将$options-array替换为具有设置器和文档的SoapClientOptions-Class,以便进行进一步了解!

我还需要完成更多的事情才能完善这个库。如果您喜欢,可以开始创建问题或提交拉取请求。如果您有问题等,请发送邮件至c.moesker@web.de。我会尽量不偷懒。

版本