tbpixel/soap-client

支持WSDL的SOAP客户端。

0.3.0 2019-04-23 16:34 UTC

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类,您会注意到它执行了许多相当繁琐的设置。以下步骤被采取

  1. 创建了一个SOAP客户端。这用于获取可用的wsdl函数和类型,以及在解析无效的WSDL文件时抛出异常。
  2. 创建了一个SOAP请求格式化器;这是将您的操作和主体转换为WSDL兼容的SOAP请求字符串的内容。
  3. 创建了一个PSR-18兼容的处理程序。
  4. 创建并返回了一个新的Client。

这相当多,这是因为它允许包内部快速扩展和更改,同时最大限度地减少包集成的 影响。

幸运的是,创建客户端很容易。最终的TBPixel\SoapClient\Handler接口是传递给客户端以处理请求的。如果您不满足PSR-18,您可以构建自己的客户端,该客户端实现该接口并将其传递进来!

贡献

有关详细信息,请参阅CONTRIBUTING

变更日志

有关最近更改的更多信息,请参阅CHANGELOG

支持我

嗨!我是一名住在加拿大不列颠哥伦比亚省温哥华的开发者。房地产市场真的很艰难。如果你想支持我,考虑在Twitter @TBPixel上关注我,或者考虑买我一杯咖啡

许可证

MIT许可证(MIT)。有关更多信息,请参阅许可证文件