1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92
|
--TEST--
SOAP handling of <any>
--SKIPIF--
<?php require_once('skipif.inc'); ?>
--INI--
precision=14
soap.wsdl_cache_enabled=0
--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["SOAPComplexType"];
if ($struct instanceof SOAPComplexType) {
return array("return" => array("any" => array("SOAPComplexType"=>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, $one_way = 0) {
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"]=>
array(1) {
["SOAPComplexType"]=>
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"]=>
array(1) {
["SOAPComplexType"]=>
object(SOAPComplexType)#10 (3) {
["varInt"]=>
int(34)
["varString"]=>
string(3) "arg"
["varFloat"]=>
float(325.325)
}
}
}
}
|