2 changed files with 86 additions and 2 deletions
@ -0,0 +1,83 @@ |
|||
--TEST-- |
|||
SOAP handling of <any> |
|||
--SKIPIF-- |
|||
<?php require_once('skipif.inc'); ?> |
|||
--FILE-- |
|||
<?php |
|||
class SOAPComplexType { |
|||
function SOAPComplexType($s, $i, $f) { |
|||
$this->varString = $s; |
|||
$this->varInt = $i; |
|||
$this->varFloat = $f; |
|||
} |
|||
} |
|||
$struct = new SOAPComplexType('arg',34,325.325); |
|||
|
|||
function echoAnyElement($x) { |
|||
global $g; |
|||
|
|||
$g = $x; |
|||
$struct = $x->inputAny->any; |
|||
if ($struct instanceof SOAPComplexType) { |
|||
return array("return" => array("any" => new SoapVar($struct, SOAP_ENC_OBJECT, "SOAPComplexType", "http://soapinterop.org/xsd", "SOAPComplexType", "http://soapinterop.org/"))); |
|||
} else { |
|||
return "?"; |
|||
} |
|||
} |
|||
|
|||
class TestSoapClient extends SoapClient { |
|||
function __construct($wsdl, $options) { |
|||
parent::__construct($wsdl, $options); |
|||
$this->server = new SoapServer($wsdl, $options); |
|||
$this->server->addFunction('echoAnyElement'); |
|||
} |
|||
|
|||
function __doRequest($request, $location, $action, $version) { |
|||
ob_start(); |
|||
$this->server->handle($request); |
|||
$response = ob_get_contents(); |
|||
ob_end_clean(); |
|||
return $response; |
|||
} |
|||
} |
|||
|
|||
$client = new TestSoapClient(dirname(__FILE__)."/interop/Round4/GroupI/round4_groupI_xsd.wsdl", |
|||
array("trace"=>1,"exceptions"=>0, |
|||
'classmap' => array('SOAPComplexType'=>'SOAPComplexType'))); |
|||
$ret = $client->echoAnyElement( |
|||
array( |
|||
"inputAny"=>array( |
|||
"any"=>new SoapVar($struct, SOAP_ENC_OBJECT, "SOAPComplexType", "http://soapinterop.org/xsd", "SOAPComplexType", "http://soapinterop.org/") |
|||
))); |
|||
var_dump($g); |
|||
var_dump($ret); |
|||
?> |
|||
--EXPECT-- |
|||
object(stdClass)#5 (1) { |
|||
["inputAny"]=> |
|||
object(stdClass)#6 (1) { |
|||
["any"]=> |
|||
object(SOAPComplexType)#7 (3) { |
|||
["varInt"]=> |
|||
int(34) |
|||
["varString"]=> |
|||
string(3) "arg" |
|||
["varFloat"]=> |
|||
float(325.325) |
|||
} |
|||
} |
|||
} |
|||
object(stdClass)#8 (1) { |
|||
["return"]=> |
|||
object(stdClass)#9 (1) { |
|||
["any"]=> |
|||
object(SOAPComplexType)#10 (3) { |
|||
["varInt"]=> |
|||
int(34) |
|||
["varString"]=> |
|||
string(3) "arg" |
|||
["varFloat"]=> |
|||
float(325.325) |
|||
} |
|||
} |
|||
} |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue