vaclavvanik / soap-interpreter
Interpreting of SOAP 1.1 and SOAP 1.2 messages
Requires
- php: ^7.3 || ^8.0
- ext-soap: *
- vaclavvanik/soap-wsdl: ^1.0.0
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
- Exception\SoapFault if soap fault thrown.
- Exception\ValueError if required argument is incorrect.
- Exception\WsdlParsingError if wsdl cannot be parsed..
- Exception\Exception if any other error occurs.
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.