From 94a372b992edaf92e18d62f8385fe78b77fe8f3e Mon Sep 17 00:00:00 2001 From: Dmitry Stogov Date: Tue, 16 Nov 2004 13:04:39 +0000 Subject: Fixed bug #30799 (SoapServer doesn't handle private or protected properties) --- ext/soap/php_encoding.c | 13 ++++++++++++- ext/soap/tests/bugs/bug30799.phpt | 25 +++++++++++++++++++++++++ 2 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 ext/soap/tests/bugs/bug30799.phpt (limited to 'ext/soap') diff --git a/ext/soap/php_encoding.c b/ext/soap/php_encoding.c index 185d3e07fa..43ddd65a2f 100644 --- a/ext/soap/php_encoding.c +++ b/ext/soap/php_encoding.c @@ -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); } diff --git a/ext/soap/tests/bugs/bug30799.phpt b/ext/soap/tests/bugs/bug30799.phpt new file mode 100644 index 0000000000..9fa0b12f0e --- /dev/null +++ b/ext/soap/tests/bugs/bug30799.phpt @@ -0,0 +1,25 @@ +--TEST-- +Bug #30799 SoapServer doesn't handle private or protected properties +--SKIPIF-- + +--FILE-- +"test://", + "uri" => "test://", + "exceptions" => 0, + "trace" => 1 )); +$x->test(new foo()); +echo $x->__getLastRequest(); +echo "ok\n"; +?> +--EXPECT-- + +abc +ok -- cgit v1.2.1