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