renova / soap-client
一个通用的 SoapClient 库
Requires
- php: ^7.3 || ^8.0
- ext-dom: *
- ext-xml: *
- psr/event-dispatcher: ^1.0
- psr/log: ^1.0
- symfony/console: ~4.0 || ~5.0
- symfony/event-dispatcher: ~4.0 || ~5.0
- symfony/filesystem: ~4.0 || ~5.0
- symfony/options-resolver: ~4.0 || ~5.0
Requires (Dev)
- ext-soap: *
- guzzlehttp/guzzle: ^7.2.0
- guzzlehttp/promises: ^1.4.0
- guzzlehttp/psr7: ^1.7.0
- laminas/laminas-code: ^3.5.0
- nyholm/psr7: ^1.3
- php-http/client-common: ^2.1
- php-http/discovery: ^1.7
- php-http/httplug: ^2.1
- php-http/message: ^1.8
- php-http/message-factory: ^1.0
- php-http/mock-client: ^1.3
- php-parallel-lint/php-parallel-lint: ^1.2
- php-vcr/php-vcr: 1.4.5
- phpdocumentor/reflection-docblock: ^5.2.2
- phpro/grumphp-shim: ~1.2.0
- phpspec/phpspec: ~7.0
- phpspec/prophecy-phpunit: ^2.0.1
- phpstan/phpstan: ^0.12.57
- phpunit/phpunit: ~9.4
- psr/http-factory: ^1.0
- psr/http-message: ^1.0.1
- robrichards/wse-php: ^2.0.3
- robrichards/xmlseclibs: ^3.0
- squizlabs/php_codesniffer: ~3.5
- symfony/validator: ~4.0 || ~5.0
Suggests
- ext-soap: If you want to use PHP's ext-soap driver.
- php-http/client-common: For gaining control over the HTTP layer
- php-http/client-implementation: For gaining control over the HTTP layer
- php-http/discovery: For gaining control over the HTTP layer
- php-http/httplug: For gaining control over the HTTP layer
- php-http/message: For gaining control over the HTTP layer
- php-http/message-factory: For gaining control over the HTTP layer
- phpro/annotated-cache: For caching SOAP responses
- psr/http-message: For gaining control over the HTTP layer
- psr/log-implementation: For logging SOAP requests, responses and errors
- robrichards/wse-php: If you want to use the WSA or WSSE middleware
- symfony/validator: If you easily want to validate SOAP requests / responses manually
- dev-master
- v1.4.1
- v1.4.0
- v1.3.2
- v1.3.1
- v1.3.0
- v1.2.0
- v1.1.4.x-dev
- 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-15 21:14:28 UTC
README
通用的 PHP SOAP-client
厌倦了构建糟糕的 SOAP 实现?这个包旨在帮助你在 PHP 中解决一些常见的 SOAP 集成问题。其目标是让 SOAP 集成再次变得有趣!让我们来看看这个包解决的问题
演示
安装
$ composer require phpro/soap-client
骨架向导
由于生命太短暂,没有时间去阅读文档,所以我们添加了一个骨架向导,可以帮助你快速与 SOAP 服务器通信!你只需要做以下事情
composer require --dev zendframework/zend-code:^3.1.0 ./vendor/bin/soap-client wizard
你可以在下一章的手动安装页面中根据需要自定义生成的代码。
启动你的 SOAP 集成
高级配置
自定义代码生成
已知问题
为什么制作这个 soap 客户端
默认情况下,SoapClient 使用数组、stdClasses 和其他标量类型的混合。在现代 OOP 世界中,这并不是一个好的做法,因为
- 它使你的代码难以测试。
- 它破坏了代码完成。
- 难以跟踪响应和请求对象的变化。
- 结果的内容永远不会明确。
为了解决上述问题,这个包将强制你使用值对象来处理请求和响应。我们知道维护这些值对象可能会是一项繁重的工作。不用担心!有一些命令行工具可以帮助你生成一个良好的起点。由于 SoapClient 需要 WSDL 到 PHP 类的类映射,还有一个类映射生成器可供使用。这将节省你大量时间!通过添加 SOAP 类型转换器,可以将特定 SOAP 类型的值从/到 PHP 类型进行转换。这个包包含了一些基本的日期和日期时间的转换器。此外,创建自己的转换器也非常简单。
另一个问题是,原生的 SoapClient 与许多魔术方法一起工作。这些魔术方法难以调试,因此没有代码完成。SOAP 和实现方法都在同一个对象上。
这个包将强制你将 SoapClient 封装到自己的客户端中。你可以选择只公开你需要的方法。对于开发者来说,你的客户端中的内容、工作方式和返回值总是很清楚。我们甚至提供了一个基 Client,供你使用,其中包含一些常用的调试、身份验证和事件系统方法。
在许多SOAP集成中,日志记录、缓存和SOAP调用都在同一个方法中。这使得你的代码难以阅读,并且依赖于其他类/包。
创建一个优秀的OO SOAP客户端意味着你需要编写大量代码。这可以是一个繁琐的任务,但可以通过自动化来完成。这就是我们为什么添加了工具来自动从WSDL中的XSD方案生成SOAP对象。甚至可以指定自己的代码生成规则和代码组装器,或者使用我们众多内置类中的一个。
保持代码整洁很重要。因此,我们为你的SOAP客户端添加了一个事件监听器。你可以在SOAP流程的每个重要步骤中进行连接。这样,就可以通过事件订阅者添加日志记录、验证、缓存和错误处理。是不是很酷?!
实现SOAP扩展真的非常痛苦。它迫使你重写内置SOAP客户端的核心方法。如果你曾经不得不在SOAP中实现WSA或WSSE,你就会知道核心中有些问题是存在的。因此,我们使你能够轻松扩展我们的SOAP客户端。你可以指定你想使用的数据传输处理器,例如Guzzle。根据所选处理器,你可以轻松添加对SOAP扩展或通过HTTP中间件的高级身份验证的支持。
处理ext-soap并不是所有开发者的强项。有一些你需要了解的棘手问题。因此,我们使你能够使用任何你想要的驱动程序。默认情况下,我们仍然会提供ext-soap驱动程序,但它是完全可选的。如果你将任何用户定义的SoapClient实现包装在我们的驱动程序接口中,你就可以使用它。
测试Web服务是件困难的事情!这就是为什么这个包与php-vcr完全兼容。测试你的SOAP客户端将会非常快,并且不会在集成第三方时出现任何错误。
最后但同样重要的是,我们想要使配置你的SoapClient变得容易。这就是为什么我们包含了一个生成的ClientFactory,你可以在其中配置你的自定义Client。你想要在开发和生产中设置不同的设置?没问题!坐下来,让工厂处理你的Client初始化。