php-soap/engine

SOAP引擎设计

资助包维护!
开放集体

2.12.0 2024-06-13 13:21 UTC

This package is auto-updated.

Last update: 2024-09-13 13:48:01 UTC


README

此包包含允许您创建可定制SOAP引擎的合约和模型。设计如下:

Engine

  • 驱动器:驱动器是一个编码器+解码器+元数据的组合,可以一起工作以处理SOAP请求。
    • 编码器:可以将混合数据编码成有效的SOAP请求。
    • 解码器:可以将SOAP响应解码成混合数据结果。
    • 元数据:处理WSDL并返回一组可用的类型和方法。
  • 传输:发送HTTP SOAP请求并接收HTTP SOAP响应。

以上每个组件都可以单独使用,以创建您自己的定制SOAP引擎。

想要帮忙吗?💚

想了解更多关于此项目未来的信息?查看我们将要工作的下一个大型项目的列表

安装

composer install php-soap/engine

引擎

此包提供可通用的引擎

SimpleEngine

SimpleEngine是一个围绕先前定义的DriverTransport实现进行包装的包装器。

use Soap\Engine\SimpleEngine;

$engine = new SimpleEngine($driver,$transport);

LazyEngine

如果您不需要加载WSDL文件或SOAP服务,则不需要加载。通过在懒加载引擎中包装一个引擎,您可以在实际请求资源之前防止任何WSDL加载。

use Soap\Engine\SimpleEngine;
use Soap\Engine\LazyEngine;

$engine = new LazyEngine(fn () => new SimpleEngine($driver, $transport));

驱动器

此包提供可通用的驱动器

SimpleDriver

SimpleEngine是一个围绕先前定义的EncoderDecoderMetadata实现进行包装的包装器。

use Soap\Engine\SimpleDriver;

$engine = new SimpleDriver($encoder, $decoder, $metadata);

PartialDriver

PartialDriver是一个围绕先前定义的EncoderDecoderMetadata实现进行包装的包装器。可能只提供所需项目中的一个。当某些实现缺失时,将在调用驱动器的方法时抛出DriverException

use Soap\Engine\PartialDriver;

$engine = new PartialDriver(metadata: $metadata);

可用组件列表

  • cached-engine:提供将引擎和编码器存储在PSR-6缓存池中的包装器。

    • CachedDriver:围绕驱动器工厂装饰缓存。
    • CachedEngine:围绕引擎工厂装饰缓存。
  • ext-soap-engine:基于PHP的ext-soap的引擎。

    • ExtSoapEncoder:使用PHP的SoapClient将混合请求体编码成SOAP请求。
    • ExtSoapDecoder:使用PHP的SoapClient将SOAP响应解码成混合数据。
    • ExtSoapMetadata:将PHP的SoapClient中的方法和类型解析成更易用的形式。
    • ExtSoapDriver:将ext-soap编码器、解码器和元数据工具组合成一个可用的ext-soap预设。
    • ExtSoapClientTransport:使用PHP的SoapClient处理SOAP请求。
    • ExtSoapServerTransport:使用PHP的SoapServer处理SOAP请求。
    • TraceableTransport:可以用于装饰另一个传输并跟踪最后一个请求和响应。
  • psr18-transport:利用您的PSR-18 HTTP客户端处理HTTP层。

    • Psr18Transport:使用PSR-18 HTTP客户端处理SOAP请求。您还可以使用基于纤维的异步客户端!
    • 提供中间件来处理一些常见的SOAP怪癖。
  • wsdl-reader:提供基于XML的PHP实现,用于收集WSDL元数据。

    • Wsdl1MetadataProvider:提供任何WSDL 1文档的方法和类型。

创建自己的引擎

引擎的每个组件都有自己的接口。您可以选择构建整个引擎或特定组件。接口看起来像这样

测试您的引擎

为了确保所有组件具有相同的结果,我们提供了一组集成测试,可用于测试您自定义的组件。

用法

composer require --dev php-soap/engine-integration-tests

这将使以下测试用例可用