php-soap / engine
SOAP引擎设计
2.12.0
2024-06-13 13:21 UTC
Requires
- php: ~8.1.0 || ~8.2.0 || ~8.3.0
- azjezz/psl: ^2.5
- php-soap/xml: ^1.6.0
Requires (Dev)
- php-standard-library/psalm-plugin: ^2.2
- phpunit/phpunit: ^9.5
- vimeo/psalm: ^5.9
README
此包包含允许您创建可定制SOAP引擎的合约和模型。设计如下:
- 驱动器:驱动器是一个编码器+解码器+元数据的组合,可以一起工作以处理SOAP请求。
- 编码器:可以将混合数据编码成有效的SOAP请求。
- 解码器:可以将SOAP响应解码成混合数据结果。
- 元数据:处理WSDL并返回一组可用的类型和方法。
- 传输:发送HTTP SOAP请求并接收HTTP SOAP响应。
以上每个组件都可以单独使用,以创建您自己的定制SOAP引擎。
想要帮忙吗?💚
想了解更多关于此项目未来的信息?查看我们将要工作的下一个大型项目的列表。
安装
composer install php-soap/engine
引擎
此包提供可通用的引擎
SimpleEngine
SimpleEngine是一个围绕先前定义的Driver
和Transport
实现进行包装的包装器。
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是一个围绕先前定义的Encoder
、Decoder
和Metadata
实现进行包装的包装器。
use Soap\Engine\SimpleDriver; $engine = new SimpleDriver($encoder, $decoder, $metadata);
PartialDriver
PartialDriver是一个围绕先前定义的Encoder
、Decoder
和Metadata
实现进行包装的包装器。可能只提供所需项目中的一个。当某些实现缺失时,将在调用驱动器的方法时抛出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:可以用于装饰另一个传输并跟踪最后一个请求和响应。
- ExtSoapEncoder:使用PHP的
-
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
这将使以下测试用例可用
- AbstractDecoderTest:可用于测试自定义的
解码器
。 - AbstractEncoderTest:可用于测试自定义的
编码器
。 - AbstractEngineTest::可用于测试自定义的
引擎
或传输
。 - AbstractMetadataProviderTest::可用于测试自定义的
元数据
或元数据提供者
。