ID: 34643 User updated by: camka at email dot ee Reported By: camka at email dot ee Status: Closed Bug Type: SOAP related Operating System: linux PHP Version: 5CVS-2005-09-26 (snap) Assigned To: dmitry New Comment:
if i call function with parameter=NULL explicitly $cl->get_it(NULL); the default value is returned as a result. should be NULL value. Previous Comments: ------------------------------------------------------------------------ [2005-09-27 17:28:44] [EMAIL PROTECTED] The bug is fixed in CVS HEAD, PHP_5_1 and PHP_5_0. The wsdl file in report has mistakes. The fixed file can be found in CVS: ext/soap/tests/bugs/bug34643.wsdl ------------------------------------------------------------------------ [2005-09-26 23:18:52] [EMAIL PROTECTED] Dmitry, check it out, please. ------------------------------------------------------------------------ [2005-09-26 22:11:25] camka at email dot ee the same behaviour with the latest snapshot. ------------------------------------------------------------------------ [2005-09-26 17:43:31] [EMAIL PROTECTED] Please try using this CVS snapshot: http://snaps.php.net/php5-latest.tar.gz For Windows: http://snaps.php.net/win32/php5-win32-latest.zip ------------------------------------------------------------------------ [2005-09-26 13:28:20] camka at email dot ee Description: ------------ I want to set default value for the parameter passed to the remote function in wsdl file. When working in non-wsdl mode, the default value on server side is initiated with no problems. But when using wsdl file for client/server initialization, the default value is processed strange way. Reproduce code: --------------- ======= srv.php ========== class fp { public function get_it($opt = 'zzz') { return $opt; } } $srv = new SoapServer('wsdl.wsdl'); $srv->setClass('fp'); $srv->handle(); ======= client.php ========== ... $cl = new SoapClient('wsdl.wsdl', $options); var_dump($cl->__getFunctions()); echo $cl->get_it(); ======== wsdl.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" default="zzz" /> </xsd:schema> </types> <message name="get_it"> <part name="opt" type="typens:opt"/> </message> <message name="get_itResponse"> <part name="return" type="xsd:string"/> </message> <portType name="fpPortType"> <operation name="get_it"> <documentation> Enter description here... </documentation> <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> ======== SOAP request ============== <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="urn:wsdl" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <SOAP-ENV:Body> <ns1:get_it> <opt xsi:nil="1"/> </ns1:get_it> </SOAP-ENV:Body> </SOAP-ENV:Envelope> =========== SOAP Response ========= <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="urn:wsdl" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <SOAP-ENV:Body> <ns1:get_itResponse> <return xsi:nil="1"/> </ns1:get_itResponse> </SOAP-ENV:Body> </SOAP-ENV:Envelope> Expected result: ---------------- array(1) { [0]=> string(27) "string get_it(opt $opt)" } zzz Actual result: -------------- array(1) { [0]=> string(27) "string get_it(UNKNOWN $opt)" } NULL ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=34643&edit=1