dmitry Tue Sep 27 11:24:47 2005 EDT Added files: /php-src/ext/soap/tests/bugs bug34643.phpt bug34643.wsdl
Modified files: /php-src/ext/soap soap.c Log: Fixed bug #34643 (wsdl default value has no effect) http://cvs.php.net/diff.php/php-src/ext/soap/soap.c?r1=1.160&r2=1.161&ty=u Index: php-src/ext/soap/soap.c diff -u php-src/ext/soap/soap.c:1.160 php-src/ext/soap/soap.c:1.161 --- php-src/ext/soap/soap.c:1.160 Mon Sep 12 04:23:49 2005 +++ php-src/ext/soap/soap.c Tue Sep 27 11:24:47 2005 @@ -17,7 +17,7 @@ | Dmitry Stogov <[EMAIL PROTECTED]> | +----------------------------------------------------------------------+ */ -/* $Id: soap.c,v 1.160 2005/09/12 08:23:49 dmitry Exp $ */ +/* $Id: soap.c,v 1.161 2005/09/27 15:24:47 dmitry Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -4018,9 +4018,21 @@ { xmlNodePtr xmlParam; encodePtr enc; + zval defval; if (param != NULL) { enc = param->encode; + if (val == NULL || Z_TYPE_P(val) == IS_NULL) { + if (param->element) { + if (param->element->fixed) { + ZVAL_STRING(&defval, param->element->fixed, 0); + val = &defval; + } else if (param->element->def && !param->element->nillable) { + ZVAL_STRING(&defval, param->element->def, 0); + val = &defval; + } + } + } } else { enc = NULL; } http://cvs.php.net/co.php/php-src/ext/soap/tests/bugs/bug34643.phpt?r=1.1&p=1 Index: php-src/ext/soap/tests/bugs/bug34643.phpt +++ php-src/ext/soap/tests/bugs/bug34643.phpt --TEST-- Bug #34643 (wsdl default value) --SKIPIF-- <?php require_once('skipif.inc'); ?> --INI-- soap.wsdl_cache_enabled=0 --FILE-- <?php ini_set("soap.wsdl_cache_enabled", 0); class fp { public function get_it($opt="zzz") { return $opt; } } class LocalSoapClient extends SoapClient { function __construct($wsdl, $options) { parent::__construct($wsdl, $options); $this->server = new SoapServer($wsdl, $options); $this->server->setClass('fp'); } function __doRequest($request, $location, $action, $version) { ob_start(); $this->server->handle($request); $response = ob_get_contents(); ob_end_clean(); return $response; } } $cl = new LocalSoapClient(dirname(__FILE__).'/bug34643.wsdl', array("trace"=>1)); print_r($cl->__getFunctions()); echo $cl->get_it("aaa")."\n"; echo $cl->get_it()."\n"; ?> --EXPECT-- Array ( [0] => string get_it(string $opt) ) aaa zzz http://cvs.php.net/co.php/php-src/ext/soap/tests/bugs/bug34643.wsdl?r=1.1&p=1 Index: php-src/ext/soap/tests/bugs/bug34643.wsdl +++ php-src/ext/soap/tests/bugs/bug34643.wsdl <?xml version='1.0' encoding='UTF-8'?> <definitions name="wsdl" targetNamespace="urn:wsdl" xmlns:typens="urn:wsdl" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns="http://schemas.xmlsoap.org/wsdl/"> <types> <xsd:schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:wsdl"> <xsd:element name="opt" type="xsd:string" default="zzz" /> </xsd:schema> </types> <message name="get_it"> <part name="opt" element="typens:opt"/> </message> <message name="get_itResponse"> <part name="return" type="xsd:string"/> </message> <portType name="fpPortType"> <operation name="get_it"> <input message="typens:get_it"/> <output message="typens:get_itResponse"/> </operation> </portType> <binding name="fpBinding" type="typens:fpPortType"> <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="get_it"> <soap:operation soapAction="urn:fpAction"/> <input> <soap:body namespace="urn:wsdl" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/> </input> <output> <soap:body namespace="urn:wsdl" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/> </output> </operation> </binding> <service name="wsdlService"> <port name="fpPort" binding="typens:fpBinding"> <soap:address location="**********"/> </port> </service> </definitions> -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php