raigu/x-road-soap-envelope

用于创建 X-Road 请求 SOAP 封包的 PHP 库。

v0.1.0 2020-05-19 06:30 UTC

This package is auto-updated.

Last update: 2024-08-23 18:07:53 UTC


README

Latest Stable Version License: MIT Build Status codecov Maintainability Scrutinizer

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 发展而来的,旨在提高代码指标。在此过程中,研究了几个代码指标服务提供商(一些徽章 CodeScene Code Health CodeScene System Mastery Test Coverage

一个值得分享的经验教训是,要对可维护性指数持怀疑态度。我倾向于同意这篇文章中的说法:“将规模作为可维护性的度量已经被低估,而“复杂”的可维护性指标被高估了”,见此处

参考文献