mirror of
https://github.com/php/php-src.git
synced 2024-11-28 04:14:26 +08:00
Fixed bug #34643 (wsdl default value has no effect)
This commit is contained in:
parent
72857b6dbb
commit
4329db25a1
1
NEWS
1
NEWS
@ -36,6 +36,7 @@ PHP NEWS
|
||||
- Fixed failing queries (FALSE returned) with mysqli_query() on 64 bit systems.
|
||||
(Andrey)
|
||||
- Fixed bug #34645 (ctype corrupts memory when validating large numbers). (Ilia)
|
||||
- Fixed bug #34643 (wsdl default value has no effect). (Dmitry)
|
||||
- Fixed bug #34590 (User defined PDOStatement class can't implement methods).
|
||||
(Marcus)
|
||||
- Fixed bug #34584 (Segfault with SPL autoload handler). (Marcus)
|
||||
|
@ -4018,9 +4018,21 @@ static xmlNodePtr serialize_zval(zval *val, sdlParamPtr param, char *paramName,
|
||||
{
|
||||
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;
|
||||
}
|
||||
|
46
ext/soap/tests/bugs/bug34643.phpt
Executable file
46
ext/soap/tests/bugs/bug34643.phpt
Executable file
@ -0,0 +1,46 @@
|
||||
--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
|
42
ext/soap/tests/bugs/bug34643.wsdl
Executable file
42
ext/soap/tests/bugs/bug34643.wsdl
Executable file
@ -0,0 +1,42 @@
|
||||
<?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>
|
Loading…
Reference in New Issue
Block a user