Return to bug36226.phpt CVS log | Up to [ELWIX - Embedded LightWeight unIX -] / embedaddon / php / ext / soap / tests / bugs |
1.1 misho 1: --TEST-- 2: Bug #36226 (SOAP Inconsistent handling when passing potential arrays) 3: --SKIPIF-- 4: <?php require_once('skipif.inc'); ?> 5: --INI-- 6: soap.wsdl_cache_enabled=0 7: --FILE-- 8: <?php 9: ini_set("soap.wsdl_cache_enabled",0); 10: $timestamp = "2005-11-08T11:22:07+03:00"; 11: $wsdl = dirname(__FILE__)."/bug35142.wsdl"; 12: 13: function PostEvents($x) { 14: var_dump($x); 15: exit(); 16: return $x; 17: } 18: 19: class TestSoapClient extends SoapClient { 20: 21: function __construct($wsdl, $options) { 22: parent::__construct($wsdl, $options); 23: $this->server = new SoapServer($wsdl, $options); 24: $this->server->addFunction('PostEvents'); 25: } 26: 27: function __doRequest($request, $location, $action, $version, $one_way = 0) { 28: echo "$request\n"; 29: $this->server->handle($request); 30: return $response; 31: } 32: 33: } 34: 35: $soapClient = new TestSoapClient($wsdl, 36: array('trace' => 1, 'exceptions' => 0, 37: 'classmap' => array('logOnEvent' => 'LogOnEvent', 38: 'logOffEvent' => 'LogOffEvent', 39: 'events' => 'IVREvents'), 40: 'features' => SOAP_SINGLE_ELEMENT_ARRAYS)); 41: 42: $logOnEvent = new LogOnEvent(34567, $timestamp); 43: $logOffEvents[] = new LogOffEvent(34567, $timestamp, "Smoked"); 44: $logOffEvents[] = new LogOffEvent(34568, $timestamp, "SmokeFree"); 45: $ivrEvents = new IVREvents("1.0", 101, 12345, 'IVR', $logOnEvent, $logOffEvents); 46: 47: $result = $soapClient->PostEvents($ivrEvents); 48: 49: class LogOffEvent { 50: public $audienceMemberId; 51: public $timestamp; 52: public $smokeStatus; 53: public $callInitiator; 54: 55: function __construct($audienceMemberId, $timestamp, $smokeStatus) { 56: $this->audienceMemberId = $audienceMemberId; 57: $this->timestamp = $timestamp; 58: $this->smokeStatus = $smokeStatus; 59: $this->callInitiator = "IVR"; 60: } 61: } 62: 63: class LogOnEvent { 64: public $audienceMemberId; 65: public $timestamp; 66: 67: function __construct($audienceMemberId, $timestamp) { 68: $this->audienceMemberId = $audienceMemberId; 69: $this->timestamp = $timestamp; 70: } 71: } 72: 73: class IVREvents { 74: public $version; 75: public $activityId; 76: public $messageId; 77: public $source; 78: public $logOnEvent; 79: public $logOffEvent; 80: 81: function __construct($version, $activityId, $messageId, $source, $logOnEvent=NULL, $logOffEvent=NULL) { 82: $this->version = $version; 83: $this->activityId = $activityId; 84: $this->messageId = $messageId; 85: $this->source = $source; 86: $this->logOnEvent = $logOnEvent; 87: $this->logOffEvent = $logOffEvent; 88: } 89: } 90: ?> 91: --EXPECTF-- 92: <?xml version="1.0" encoding="UTF-8"?> 93: <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://testurl/Message"><SOAP-ENV:Body><ns1:ivrEvents version="1.0" activityId="101" messageId="12345" source="IVR"><ns1:logOffEvent audienceMemberId="34567" timestamp="2005-11-08T11:22:07+03:00" smokeStatus="Smoked" callInitiator="IVR"/><ns1:logOffEvent audienceMemberId="34568" timestamp="2005-11-08T11:22:07+03:00" smokeStatus="SmokeFree" callInitiator="IVR"/><ns1:logOnEvent audienceMemberId="34567" timestamp="2005-11-08T11:22:07+03:00"/></ns1:ivrEvents></SOAP-ENV:Body></SOAP-ENV:Envelope> 94: 95: object(IVREvents)#%d (6) { 96: ["version"]=> 97: string(3) "1.0" 98: ["activityId"]=> 99: int(101) 100: ["messageId"]=> 101: int(12345) 102: ["source"]=> 103: string(3) "IVR" 104: ["logOnEvent"]=> 105: array(1) { 106: [0]=> 107: object(LogOnEvent)#10 (2) { 108: ["audienceMemberId"]=> 109: int(34567) 110: ["timestamp"]=> 111: string(25) "2005-11-08T11:22:07+03:00" 112: } 113: } 114: ["logOffEvent"]=> 115: array(2) { 116: [0]=> 117: object(LogOffEvent)#%d (4) { 118: ["audienceMemberId"]=> 119: int(34567) 120: ["timestamp"]=> 121: string(25) "2005-11-08T11:22:07+03:00" 122: ["smokeStatus"]=> 123: string(6) "Smoked" 124: ["callInitiator"]=> 125: string(3) "IVR" 126: } 127: [1]=> 128: object(LogOffEvent)#%d (4) { 129: ["audienceMemberId"]=> 130: int(34568) 131: ["timestamp"]=> 132: string(25) "2005-11-08T11:22:07+03:00" 133: ["smokeStatus"]=> 134: string(9) "SmokeFree" 135: ["callInitiator"]=> 136: string(3) "IVR" 137: } 138: } 139: }