icegloo24 / soap-ext
此软件包最新版本(1.1.09)没有可用的许可信息。
1.1.09
2022-11-16 09:37 UTC
Requires
- php: ^7.0.0
- robrichards/xmlseclibs: ^2.1.1
Requires (Dev)
- phpunit/phpunit: ^6.0
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
- 使用RobRichards XMLSecLibs创建签名。
待办事项
- Soap编码 - (SOAP_ENC_ARRAY,XSD_...)目前只支持SOAP_ENC_OBJECT和XSD_STRING
- 改进RequestBuilder中的命名空间命名
- 将$options-array替换为具有设置器和文档的SoapClientOptions-Class,以便进行进一步了解!
我还需要完成更多的事情才能完善这个库。如果您喜欢,可以开始创建问题或提交拉取请求。如果您有问题等,请发送邮件至c.moesker@web.de。我会尽量不偷懒。