phpjit/soap-client

通用目的 SoapClient 库

v1.7.0 2021-07-14 08:18 UTC

README

Build status Installs Packagist

通用 PHP SOAP-client

厌倦了构建糟糕的 SOAP 实现?此包旨在帮助您解决 PHP 中一些常见的 SOAP 集成痛点。其目标是让 SOAP 集成再次变得有趣!让我们检查一下此包解决的痛点

演示

Soap Client demo

安装

$ composer require phpro/soap-client

脚手架向导

由于生活太短暂,无法阅读文档,我们已添加脚手架向导,可让您立即与您的 SOAP 服务器通信!您需要做的只是

composer require --dev laminas/laminas-code:^3.1.0
./vendor/bin/soap-client wizard

您可以根据下一章中的手动安装页面自定义生成的代码。

启动 SOAP 集成

  1. 创建您自己的 SOAP 客户端。
  2. 根据 SOAP 类型生成 PHP 类。
  3. 生成类图
  4. 生成您自己的 SOAP 客户端。
  5. 生成客户端工厂。
  6. 使用您的 SOAP 客户端。
  7. 测试您的 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,您可以在其中配置您的自定义客户端。您在开发和生产环境中需要其他设置?没问题!放松一下,让工厂处理您的客户端初始化。