mirror of
https://github.com/php/php-src.git
synced 2025-01-18 09:43:36 +08:00
Fixed bug #30799 (SoapServer doesn't handle private or protected properties)
This commit is contained in:
parent
a9a5dbd9b8
commit
94a372b992
@ -1424,7 +1424,18 @@ static xmlNodePtr to_xml_object(encodeTypePtr type, zval *data, int style, xmlNo
|
||||
property = master_to_xml(get_conversion((*zprop)->type), (*zprop), style, xmlParam);
|
||||
|
||||
if (key_type == HASH_KEY_IS_STRING) {
|
||||
xmlNodeSetName(property, str_key);
|
||||
char *prop_name;
|
||||
|
||||
if (Z_TYPE_P(data) == IS_OBJECT) {
|
||||
char *class_name;
|
||||
|
||||
zend_unmangle_property_name(str_key, &class_name, &prop_name);
|
||||
} else {
|
||||
prop_name = str_key;
|
||||
}
|
||||
if (prop_name) {
|
||||
xmlNodeSetName(property, prop_name);
|
||||
}
|
||||
}
|
||||
zend_hash_move_forward(prop);
|
||||
}
|
||||
|
25
ext/soap/tests/bugs/bug30799.phpt
Normal file
25
ext/soap/tests/bugs/bug30799.phpt
Normal file
@ -0,0 +1,25 @@
|
||||
--TEST--
|
||||
Bug #30799 SoapServer doesn't handle private or protected properties
|
||||
--SKIPIF--
|
||||
<?php require_once('skipif.inc'); ?>
|
||||
--FILE--
|
||||
<?php
|
||||
class foo {
|
||||
public $a="a";
|
||||
private $b="b";
|
||||
protected $c="c";
|
||||
|
||||
}
|
||||
|
||||
$x = new SoapClient(NULL,array("location"=>"test://",
|
||||
"uri" => "test://",
|
||||
"exceptions" => 0,
|
||||
"trace" => 1 ));
|
||||
$x->test(new foo());
|
||||
echo $x->__getLastRequest();
|
||||
echo "ok\n";
|
||||
?>
|
||||
--EXPECT--
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="test://" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><param0 xsi:type="SOAP-ENC:Struct"><a xsi:type="xsd:string">a</a><b xsi:type="xsd:string">b</b><c xsi:type="xsd:string">c</c></param0></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
|
||||
ok
|
Loading…
Reference in New Issue
Block a user