xref: /PHP-7.4/ext/soap/tests/any.phpt (revision 26dfce7f)
1--TEST--
2SOAP handling of <any>
3--SKIPIF--
4<?php require_once('skipif.inc'); ?>
5--INI--
6precision=14
7soap.wsdl_cache_enabled=0
8--FILE--
9<?php
10class SOAPComplexType {
11    function __construct($s, $i, $f) {
12        $this->varString = $s;
13        $this->varInt = $i;
14        $this->varFloat = $f;
15    }
16}
17$struct = new SOAPComplexType('arg',34,325.325);
18
19function echoAnyElement($x) {
20	global $g;
21
22	$g = $x;
23	$struct = $x->inputAny->any["SOAPComplexType"];
24	if ($struct instanceof SOAPComplexType) {
25		return array("return" => array("any" => array("SOAPComplexType"=>new SoapVar($struct, SOAP_ENC_OBJECT, "SOAPComplexType", "http://soapinterop.org/xsd", "SOAPComplexType", "http://soapinterop.org/"))));
26	} else {
27		return "?";
28	}
29}
30
31class TestSoapClient extends SoapClient {
32  function __construct($wsdl, $options) {
33    parent::__construct($wsdl, $options);
34    $this->server = new SoapServer($wsdl, $options);
35    $this->server->addFunction('echoAnyElement');
36  }
37
38  function __doRequest($request, $location, $action, $version, $one_way = 0) {
39    ob_start();
40    $this->server->handle($request);
41    $response = ob_get_contents();
42    ob_end_clean();
43    return $response;
44  }
45}
46
47$client = new TestSoapClient(__DIR__."/interop/Round4/GroupI/round4_groupI_xsd.wsdl",
48                             array("trace"=>1,"exceptions"=>0,
49                             'classmap' => array('SOAPComplexType'=>'SOAPComplexType')));
50$ret = $client->echoAnyElement(
51  array(
52    "inputAny"=>array(
53       "any"=>new SoapVar($struct, SOAP_ENC_OBJECT, "SOAPComplexType", "http://soapinterop.org/xsd", "SOAPComplexType", "http://soapinterop.org/")
54     )));
55var_dump($g);
56var_dump($ret);
57?>
58--EXPECT--
59object(stdClass)#5 (1) {
60  ["inputAny"]=>
61  object(stdClass)#6 (1) {
62    ["any"]=>
63    array(1) {
64      ["SOAPComplexType"]=>
65      object(SOAPComplexType)#7 (3) {
66        ["varInt"]=>
67        int(34)
68        ["varString"]=>
69        string(3) "arg"
70        ["varFloat"]=>
71        float(325.325)
72      }
73    }
74  }
75}
76object(stdClass)#8 (1) {
77  ["return"]=>
78  object(stdClass)#9 (1) {
79    ["any"]=>
80    array(1) {
81      ["SOAPComplexType"]=>
82      object(SOAPComplexType)#10 (3) {
83        ["varInt"]=>
84        int(34)
85        ["varString"]=>
86        string(3) "arg"
87        ["varFloat"]=>
88        float(325.325)
89      }
90    }
91  }
92}
93