phpro / soap-client
一个通用的SoapClient库
Requires
- php: ~8.1.0 || ~8.2.0 || ~8.3.0
- azjezz/psl: ^2.1
- laminas/laminas-code: ^4.8.0
- php-soap/cached-engine: ~0.2
- php-soap/encoding: ~0.4
- php-soap/engine: ^2.10.1
- php-soap/psr18-transport: ^1.6
- php-soap/wsdl-reader: ~0.16
- psr/event-dispatcher: ^1.0
- psr/log: ^1.0 || ^2.0 || ^3.0
- symfony/console: ~5.4 || ~6.0 || ~7.0
- symfony/event-dispatcher: ~5.4 || ~6.0 || ~7.0
- symfony/filesystem: ~5.4 || ~6.0 || ~7.0
- symfony/validator: ~5.4 || ~6.0 || ~7.0
Requires (Dev)
- guzzlehttp/guzzle: ^7.5.0
- nyholm/psr7: ^1.5
- php-http/vcr-plugin: ^1.2
- php-parallel-lint/php-parallel-lint: ^1.3
- phpro/grumphp-shim: ^2.3
- phpspec/phpspec: ~7.2
- phpspec/prophecy-phpunit: ^2.0.1
- phpstan/phpstan: ^1.10.15
- phpunit/phpunit: ~9.5
- squizlabs/php_codesniffer: ^3.7.1
- symfony/cache: ^6.4 || ^7.0
- v4.x-dev
- 4.0.0-alpha1
- v3.x-dev
- 3.3.0
- 3.2.0
- 3.1.2
- 3.1.1
- 3.1.0
- 3.0.0
- 3.0.0-alpha1
- v2.x-dev
- 2.4.2
- 2.4.1
- 2.4.0
- 2.3.0
- v2.2.1
- v2.2.0
- v2.1.0
- v2.0.0
- v1.7.x-dev
- v1.7.4
- v1.7.3
- v1.7.2
- v1.7.1
- v1.7.0
- v1.6.0
- v1.5.0
- v1.4.1
- v1.4.0
- v1.3.2
- v1.3.1
- v1.3.0
- v1.2.0
- v1.1.3
- v1.1.2
- v1.1.1
- v1.1.0
- v1.0.5
- v1.0.4
- v1.0.3
- 1.0.2
- v1.0.1
- v1.0.0
- 0.7.11
- 0.7.10
- 0.7.9
- 0.7.8
- 0.7.7
- 0.7.6
- 0.7.5
- 0.7.4
- 0.7.3
- 0.7.2
- 0.7.1
- 0.7.0
- 0.6.1
- 0.6.0
- v0.5.3
- v0.5.2
- v0.5.1
- v0.5.0
- v0.4.0
- v0.3.1
- v0.3.0
- v0.2.3
- v0.2.2
- v0.2.1
- v0.2.0
- v0.1.4
- v0.1.3
- v0.1.2
- v0.1.1
- v0.1.0
This package is auto-updated.
Last update: 2024-09-18 08:31:08 UTC
README
通用的PHP SOAP客户端
厌倦了构建糟糕的SOAP实现?这个包旨在帮助你在PHP中解决一些常见的SOAP集成痛点。它的目标是让SOAP集成再次变得有趣!
演示
想要帮忙?💚
想要了解这个项目未来的更多信息?查看我们将要工作的下一个大型项目列表。
先决条件
你可以选择你想要使用的HTTP客户端。此包需要某些PSR实现才能安装
- PSR-6: 如
psr/cache-implementation
的symfony/cache
或cache/*-adapter
- PSR-7: 如
nyholm/psr7
或guzzlehttp/psr7
的psr/http-message-implementation
- PSR-17: 如
nyholm/psr7
或guzzlehttp/psr7
的psr/http-factory-implementation
- PSR-18: 如
symfony/http-client
或guzzlehttp/guzzle
的psr/http-client-implementation
示例
$ composer require symfony/http-client nyholm/psr7
安装
$ composer require phpro/soap-client
脚手架向导
由于生活太短暂,没有时间阅读文档,我们增加了一个脚手架向导,它将让您快速与SOAP服务器通信!您需要做的就是
./vendor/bin/soap-client wizard
您可以根据下一章的手动安装页面自定义生成的代码。
让您的SOAP集成运行起来
高级配置
这是一个基于 php-soap 的客户端实现。对于更高级的配置,您可以在php-soap包内部查看文档。
自定义代码生成
为什么创建这个SOAP客户端
默认情况下,SoapClient与数组和标准类以及其他标量类型混合使用。在现代OOP世界中,这不是一个好的做法,因为
- 它使您的代码难以测试。
- 它破坏了代码补全
- 难以跟踪响应和请求对象的更改。
- 结果内容永远不会明确。
为了解决上述问题,此包将强制您使用值对象来处理请求和响应。我们知道维护这些值对象可能是一项繁重的工作。别担心!有一些命令行工具可以帮助您生成良好的基础。因为SoapClient需要WSDL到PHP类的类映射,因此还有一个类映射生成器可用。这将节省您大量时间!通过添加SOAP类型转换器,可以转换特定SOAP类型的值从/to PHP类型。该包包含一些基本的日期和日期时间的转换器。除此之外,创建自己的转换器也非常简单。
另一个问题是,本机SoapClient使用许多魔术方法。调试这些魔术方法很困难,因此没有代码补全。SOAP和实现方法都在同一个对象上。
此包将强制您将SoapClient封装到自己的客户端中。您可以选择仅公开您需要的方法。对于开发人员来说,您的客户端中有什么,如何工作以及返回什么总是清晰的。我们还为您提供了一个基客户端,您可以使用一些常用的方法进行调试、认证和事件系统。
在许多SOAP集成中,日志记录、缓存和Soap调用都在同一个方法中。这使得您的代码难以阅读且依赖于其他类/包。
创建一个优秀的OO SOAP客户端意味着您必须编写大量代码。这可能是一项繁琐的任务,可以自动化。这就是为什么我们添加了工具,可以自动从WSDL内的XSD方案生成SOAP对象。甚至可以指定自己的代码生成规则和代码组装器,或使用我们提供的许多内置类。
保持代码清洁非常重要。因此,我们为您添加了一个事件监听器到您的Soap客户端。您可以在SOAP流程的每个重要步骤中进行挂钩。这样,就可以通过事件订阅者添加日志记录、验证和错误处理。很酷,对吧?
实现SOAP扩展确实很痛苦。它迫使您覆盖内置SOAP客户端的核心方法。如果您曾经实现过WSA或WSSE在SOAP中,您知道核心中存在一些问题。因此,我们使您轻松扩展我们的SOAP客户端。您可以指定您想要使用的数据传输处理器,例如Guzzle。根据所选处理器,您可以轻松添加对SOAP扩展或通过HTTP中间件的高级认证的支持。
处理ext-soap并非所有开发人员都能胜任。有一些需要了解的棘手问题。因此,我们使您能够使用您想要的任何驱动程序。默认情况下,我们仍然会提供ext-soap驱动程序,但它完全是可选的。您可以使用任何用户空间SoapClient实现,只要您将其包装在我们的自定义驱动接口中。
测试Web服务很难!此包提供了一些测试SOAP服务的方法。由于传输是基于HTTP的,您可以使用php-vcr
实现。如果您不想进行实际的HTTP调用,您也可以在测试用例中使用自定义的Transport
或Caller
。测试您的SOAP客户端将非常快,并且在集成的第三方方面不会出现任何错误。
最后但同样重要的是,我们希望使您配置SoapClient变得简单。因此,我们包含了一个生成的ClientFactory,您可以在其中配置您的自定义客户端。您在开发和生产期间需要其他设置?没问题!坐下来,让工厂处理您的客户端初始化。