phpjit / soap-client
通用目的 SoapClient 库
Requires
- php: ^7.4 || ^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.3.3
- phpspec/phpspec: ~7.0
- phpspec/prophecy-phpunit: ^2.0.1
- phpstan/phpstan: ^0.12.87
- 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
Conflicts
- php-http/guzzle6-adapter: <2.0
- dev-master
- v2.0.0.x-dev
- 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-06 13:58:08 UTC
README
通用 PHP SOAP-client
厌倦了构建糟糕的 SOAP 实现?此包旨在帮助您解决 PHP 中一些常见的 SOAP 集成痛点。其目标是让 SOAP 集成再次变得有趣!让我们检查一下此包解决的痛点
演示
安装
$ composer require phpro/soap-client
脚手架向导
由于生活太短暂,无法阅读文档,我们已添加脚手架向导,可让您立即与您的 SOAP 服务器通信!您需要做的只是
composer require --dev laminas/laminas-code:^3.1.0 ./vendor/bin/soap-client wizard
您可以根据下一章中的手动安装页面自定义生成的代码。
启动 SOAP 集成
高级配置
自定义代码生成
已知问题
为什么制作此 soap 客户端
默认情况下,SoapClient 与数组、stdClasses 和其他标量类型的混合一起工作。这在现代 OOP 世界中不是一种好做法,因为
- 它使您的代码难以测试。
- 它破坏了代码补全
- 难以跟踪响应和请求对象中的更改。
- 结果的内容永远不会明确。
为了解决上述问题,此包将强制您使用值对象来处理请求和响应。我们知道维护这些值对象可能是一项艰巨的工作。不用担心!有一些命令行工具可供使用,可以帮助您生成良好的基础。由于 SoapClient 需要 WSDL 到 PHP 类的类图,因此还有一个类图生成器。这将节省您大量的时间!通过添加 SOAP 类型转换器,可以将特定 SOAP 类型的值从/到 PHP 类型进行转换。该包包含一些用于日期和日期时间的基 本转换器。除此之外,创建您自己的转换器也非常简单。
另一个问题是,原生的 SoapClient 与许多魔法方法一起工作。很难调试这些魔法方法,因此没有代码补全。SOAP 和实现方法都在同一个对象上。
此软件包会强制您将 SoapClient 封装到自己的客户端中。您可以选择仅暴露您需要的功能。开发者始终可以清晰地了解您的客户端包含什么、如何工作以及返回什么。我们还为您提供了一个基础的客户端,其中包含一些常用的调试、认证和事件系统方法。
在许多 SOAP 集成中,日志记录、缓存和 Soap 调用都在同一个方法中。这使得您的代码难以阅读,并且依赖于其他类/包。
创建一个优秀的面向对象 SOAP 客户端意味着您需要编写大量代码。这可以是一个繁琐的任务,但是可以通过自动化来完成。这就是为什么我们添加了工具,可以从 WSDL 内部的 XSD 方案中自动生成 SOAP 对象。您甚至可以指定自己的代码生成规则和代码组装器,或者使用我们提供的许多内置类之一。
保持代码清洁非常重要。因此,我们在 Soap 客户端中添加了一个事件监听器。您可以在 SOAP 流程的每个重要步骤中进行挂钩。这样就可以通过事件订阅者添加日志记录、验证、缓存和错误处理。不是很酷吗?
实现 SOAP 扩展非常痛苦。它迫使您覆盖内置 SOAP 客户端的核心理法。如果您曾经需要实现 WSA 或 WSSE,您知道核心中确实存在问题。因此,我们使您能够轻松地扩展我们的 SOAP 客户端。您可以选择使用哪种数据传输处理器,例如 Guzzle。根据所选处理器,您可以轻松添加对 SOAP 扩展或通过 HTTP 中间件的高级认证的支持。
处理 ext-soap 不是所有开发者都能胜任的。您需要了解一些棘手的问题。因此,我们使您能够使用任何想要的驱动器。默认情况下,我们仍会提供 ext-soap 驱动器,但它是完全可选的。如果您将 SoapClient 封装在我们的驱动器接口中,您可以使用任何用户空间的 SoapClient 实现。
处理 web 服务测试很困难!这就是为什么这个软件包完全兼容 php-vcr。测试您的 SOAP 客户端将非常快,并且没有任何第三方集成端的错误。
最后但同样重要的是,我们希望使您能够轻松配置 SoapClient。这就是为什么我们包含了一个生成的 ClientFactory,您可以在其中配置您的自定义客户端。您在开发和生产环境中需要其他设置?没问题!放松一下,让工厂处理您的客户端初始化。
