tbpixel / soap-client
支持WSDL的SOAP客户端。
Requires
- php: ^7.2
- ext-soap: *
- ext-xml: *
- guzzlehttp/psr7: ^1.5
- psr/http-client: ^1.0
- psr/http-message: ^1.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.14
- infection/infection: ^0.12.2
- mockery/mockery: ^1.2
- phpstan/phpstan: ^0.11.2
- phpunit/phpunit: ^8.0
- symfony/var-dumper: ^4.2
This package is auto-updated.
Last update: 2024-09-24 05:26:00 UTC
README
基于PSR-7和PSR-18构建的WSDL支持SOAP客户端。
内容
安装
注意,此包仍在开发中,可能会进行重大更改。
您可以通过composer安装此包
composer require tbpixel/soap-client
注意:版本0.2.0
引入了Guzzle作为首选HTTP客户端。从0.3.0
开始,soap-client只依赖于PSR-18。如果您仍然希望使用Guzzle而无需PSR-18,我建议使用composer require tbpixel/soap-client:^0.2.0
获取版本0.2.0。
原因
如果您(像我一样)必须在2019年处理SOAP,您可能会在处理聚合 SOAP操作时遇到困境。如果特定的SOAP操作提供了大量数据,那么PHP的内置SOAP客户端不仅会将整个字符串响应加载到内存中,而且还会根据响应实例化一个巨大的stdClass对象数组。
这会消耗大量的内存资源,甚至会使处理SOAP变得更加头疼。此包旨在通过提供基于PSR-18的PHP Soap Client来帮助解决这个问题。
这结合了另一个我正在开发的名为XML Streamer的包,在使用soap API时允许进行一些大幅改进的内存管理。
示例
如果您只想快速开始,ClientFactory类将做大部分繁重的工作。
use TBPixel\SoapClient\ClientFactory; // @var \Psr\Http\Client\ClientInterface $http $client = ClientFactory::new($http, 'http://example.com/service.wsdl'); // $response is a \Psr\Http\Message\StreamInterface $response = $client->call('MyAction', [ 'foo' => 'bar', ]);
创建自己的处理器
通过检查ClientFactory类,您会注意到它执行了许多相当繁琐的设置。以下步骤被采取
- 创建了一个SOAP客户端。这用于获取可用的wsdl函数和类型,以及在解析无效的WSDL文件时抛出异常。
- 创建了一个SOAP请求格式化器;这是将您的操作和主体转换为WSDL兼容的SOAP请求字符串的内容。
- 创建了一个PSR-18兼容的处理程序。
- 创建并返回了一个新的Client。
这相当多,这是因为它允许包内部快速扩展和更改,同时最大限度地减少包集成的 影响。
幸运的是,创建客户端很容易。最终的TBPixel\SoapClient\Handler
接口是传递给客户端以处理请求的。如果您不满足PSR-18,您可以构建自己的客户端,该客户端实现该接口并将其传递进来!
贡献
有关详细信息,请参阅CONTRIBUTING。
变更日志
有关最近更改的更多信息,请参阅CHANGELOG。
支持我
嗨!我是一名住在加拿大不列颠哥伦比亚省温哥华的开发者。房地产市场真的很艰难。如果你想支持我,考虑在Twitter @TBPixel上关注我,或者考虑买我一杯咖啡。
许可证
MIT许可证(MIT)。有关更多信息,请参阅许可证文件。