Zend\Soap\Server\DocumentLiteralWrapper
Wraps WSDL Document/Literal Style service objects to hide SOAP request message abstraction from the actual service object.
When using the document/literal SOAP message pattern you end up with one
object passed to your service methods that contains all the parameters of
the method. This obviously leads to a problem since Zend\Soap\Wsdl tightly
couples method parameters to request message parameters.
Example:
class MyCalculatorService
{
/**
* @param int $x
* @param int $y
* @return int
*
public function add($x, $y) {}
}
The document/literal wrapper pattern would lead php ext/soap to generate a
single "request" object that contains $x and $y properties. To solve this a
wrapper service is needed that extracts the properties and delegates a
proper call to the underlying service.
The input variable from a document/literal SOAP-call to the client
MyCalculatorServiceClient#add(10, 20) would lead PHP ext/soap to create
the following request object:
$addRequest = new \stdClass;
$addRequest->x = 10;
$addRequest->y = 20;
This object does not match the signature of the server-side
MyCalculatorService and lead to failure.
Also the response object in this case is supposed to be an array
or object with a property "addResult":
$addResponse = new \stdClass;
$addResponse->addResult = 30;
To keep your service object code free from this implementation detail
of SOAP this wrapper service handles the parsing between the formats.
Synopsis
- // members
- protected $object;
- protected ReflectionObject $reflection;
- // methods
- public void __construct()
- public mixed __call()
- protected array _parseArguments()
- protected array _getResultMessage()
- protected void _assertServiceDelegateHasMethod()
- protected void _assertOnlyOneArgument()
Members
protected
- $object —
- $reflection — ReflectionObject
Methods
protected
- _assertOnlyOneArgument()
- _assertServiceDelegateHasMethod()
- _getResultMessage() — Returns result message content
- _parseArguments() — Parse the document/literal wrapper into arguments to call the real service.
public
- __construct() — Pass Service object to the constructor
- __call() — Proxy method that does the heavy document/literal decomposing.