raigu / x-road-soap-envelope
用于创建 X-Road 请求 SOAP 封包的 PHP 库。
v0.1.0
2020-05-19 06:30 UTC
Requires
- php: ^7.2
- ext-dom: *
Requires (Dev)
- phpunit/phpunit: 7.*
Suggests
- ext-csprng: Needed if you delegate request id generation to library (\Raigu\XRoad\SoapEnvelope\UniqueId)
This package is auto-updated.
Last update: 2024-08-23 18:07:53 UTC
README
x-road-soap-envelope
用于创建 X-Road 请求 SOAP 封包的 PHP 库。
适用于需要代理多个 X-Road 服务并必须动态创建 SOAP 请求的应用程序。如果您只需要集成一个 X-Road 服务,那么这个库可能不是最佳选择。
需求
- php 7.2+
- DOM 扩展
安装
$ composer require raigu/x-road-soap-envelope
用法
require_once 'vendor/autoload.php'; use Raigu\XRoad\SoapEnvelope\SoapEnvelope; use Raigu\XRoad\SoapEnvelope\Client; use Raigu\XRoad\SoapEnvelope\ClientReference; use Raigu\XRoad\SoapEnvelope\Service; use Raigu\XRoad\SoapEnvelope\ServiceReference; use Raigu\XRoad\SoapEnvelope\ServiceRequest; use Raigu\XRoad\SoapEnvelope\UniqueId; $envelope = new SoapEnvelope( new Client( new ClientReference('EE/GOV/MEMBER1/SUBSYSTEM1') ), new Service( new ServiceReference('EE/GOV/MEMBER2/SUBSYSTEM2/exampleService/v1') ), new ServiceRequest( '<ns1:exampleService xmlns:ns1="http://producer.x-road.eu">' . '<exampleInput>foo</exampleInput>' . '</ns1:exampleService>' ), new UniqueId ); echo $envelope->asStr();
以上将输出
<?xml version="1.0" encoding="UTF-8"?>
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:id="http://x-road.eu/xsd/identifiers"
xmlns:xrd="http://x-road.eu/xsd/xroad.xsd">
<env:Header>
<xrd:client id:objectType="SUBSYSTEM">
<id:xRoadInstance>EE</id:xRoadInstance>
<id:memberClass>GOV</id:memberClass>
<id:memberCode>MEMBER1</id:memberCode>
<id:subsystemCode>SUBSYSTEM1</id:subsystemCode>
</xrd:client>
<xrd:service id:objectType="SERVICE">
<id:xRoadInstance>EE</id:xRoadInstance>
<id:memberClass>GOV</id:memberClass>
<id:memberCode>MEMBER2</id:memberCode>
<id:subsystemCode>SUBSYSTEM2</id:subsystemCode>
<id:serviceCode>exampleService</id:serviceCode>
<id:serviceVersion>v1</id:serviceVersion>
</xrd:service>
<xrd:id>0113072ef17ebb989e61a5b6c95f9efe</xrd:id>
<xrd:protocolVersion>4.0</xrd:protocolVersion>
</env:Header>
<env:Body>
<ns1:exampleService xmlns:ns1="http://producer.x-road.eu">
<exampleInput>foo</exampleInput>
</ns1:exampleService>
</env:Body>
</env:Envelope>
在 SoapEnvelope
构造函数中输入参数的顺序不重要。
有更多参数类型。请参阅 未来测试,它演示了所有选项。
开发
$ git@github.com:raigu/x-road-soap-envelope.git
$ cd x-road-soap-envelope
$ composer install
现在您可以运行测试。
测试
$ composer test
可读性测试
$ composer test -- --testdox
代码覆盖率报告
$ composer coverage
动机
该库是从 raigu/x-road-soap-envelope-builder 发展而来的,旨在提高代码指标。在此过程中,研究了几个代码指标服务提供商(一些徽章
)
一个值得分享的经验教训是,要对可维护性指数持怀疑态度。我倾向于同意这篇文章中的说法:“将规模作为可维护性的度量已经被低估,而“复杂”的可维护性指标被高估了”,见此处。