vaclavvanik/soap-interpreter

Interpreting of SOAP 1.1 and SOAP 1.2 messages

1.0.0 2022-12-06 09:49 UTC

This package is auto-updated.

Last update: 2024-10-06 14:10:53 UTC


README

This package provides interpreting of SOAP 1.1 and SOAP 1.2 messages. It can be used in WSDL or non-WSDL mode. The implementation is built on the top of PHP's SoapClient.

It is not intended to use this package directly.

You can use:

  • soap-binding package for creating PSR-7 compliant SOAP requests and processing PSR-7 responses to SOAP.

  • soap-client package for processing requests and responses with PSR HTTP client.

Install

You can install this package via composer.

composer require vaclavvanik/soap-interpreter

Usage

An PhpInterpreter is responsible for generating SOAP request messages and translating SOAP response messages.

Create PhpInterpreter in WSDL mode

<?php

declare(strict_types=1);

use VaclavVanik\Soap\Interpreter\PhpInterpreter;

$interpreter = PhpInterpreter::fromWsdl('http://www.dneonline.com/calculator.asmx?wsdl');

Create PhpInterpreter in non-WSDL mode

<?php

declare(strict_types=1);

use VaclavVanik\Soap\Interpreter\PhpInterpreter;

$interpreter = PhpInterpreter::fromNonWsdl('http://tempuri.org/', 'http://www.dneonline.com/calculator.asmx');

Generate SOAP request message in WSDL mode

<?php

declare(strict_types=1);

use VaclavVanik\Soap\Interpreter\PhpInterpreter;

$request = (PhpInterpreter::fromWsdl('http://www.dneonline.com/calculator.asmx?wsdl'))->request('Add', ['Add' => ['intA' => 1, 'intB' => 3]]);
print_r($request->getBody());

Output:

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://tempuri.org/">
    <SOAP-ENV:Body>
        <ns1:Add>
            <ns1:intA>1</ns1:intA>
            <ns1:intB>3</ns1:intB>
        </ns1:Add>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Translate SOAP response message

<?php

declare(strict_types=1);

use VaclavVanik\Soap\Interpreter\PhpInterpreter;

$response = <<<XML
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
   <SOAP-ENV:Body>
        <ns1:AddResponse xmlns:ns1="http://tempuri.org/">
          <ns1:AddResult>4</ns1:AddResult>
        </ns1:AddResponse>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>
XML;

$response = (PhpInterpreter::fromWsdl('http://www.dneonline.com/calculator.asmx?wsdl'))->response('Add', $response);
print_r($response->getResult());

Output:

stdClass Object
(
    [AddResult] => 4
)

Advanced WSDL usage

Package soap-interpreter-wsdl offers advanced WSDL usage.

Exceptions

or VaclavVanik\Soap\Wsdl\Exception\Exception if other wsdl error occurs.

Run check - coding standards and php-unit

Install dependencies:

make install

Run check:

make check

Changelog

Please see CHANGELOG for more information what has changed recently.

License

The MIT License (MIT). Please see License File for more information.