1636. Class

1636.1. 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 ZendSoapWsdl 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.

1636.1.1. Methods

1636.1.1.1. __construct

__construct()

Pass Service object to the constructor

Parameters:object

1636.1.1.2. __call

__call()

Proxy method that does the heavy document/literal decomposing.

Parameters:
  • string
  • array
Return type:

mixed

1636.1.1.3. _parseArguments

_parseArguments()

Parse the document/literal wrapper into arguments to call the real service.

Parameters:
  • string
  • object
Throws UnexpectedValueException:
 
Return type:

array

1636.1.1.4. _getResultMessage

_getResultMessage()

1636.1.1.5. _assertServiceDelegateHasMethod

_assertServiceDelegateHasMethod()

1636.1.1.6. _assertOnlyOneArgument

_assertOnlyOneArgument()