mirror of
https://github.com/php/php-src.git
synced 2025-08-15 21:48:51 +02:00
Merge branch 'PHP-7.0' into PHP-7.1
This commit is contained in:
commit
02fb46e17c
4 changed files with 34 additions and 3 deletions
1
NEWS
1
NEWS
|
@ -60,6 +60,7 @@ PHP NEWS
|
|||
SimpleXMLElement). (Nikita)
|
||||
|
||||
- SOAP:
|
||||
. Fixed bug #71711 (Soap Server Member variables reference bug). (Nikita)
|
||||
. Fixed bug #71996 (Using references in arrays doesn't work like expected).
|
||||
(Nikita)
|
||||
|
||||
|
|
|
@ -1958,7 +1958,7 @@ static xmlNodePtr to_xml_object(encodeTypePtr type, zval *data, int style, xmlNo
|
|||
xmlNodePtr property;
|
||||
|
||||
ZEND_HASH_FOREACH_STR_KEY_VAL_IND(prop, str_key, zprop) {
|
||||
|
||||
ZVAL_DEREF(zprop);
|
||||
property = master_to_xml(get_conversion(Z_TYPE_P(zprop)), zprop, style, xmlParam);
|
||||
|
||||
if (str_key) {
|
||||
|
@ -2679,7 +2679,6 @@ static xmlNodePtr to_xml_map(encodeTypePtr type, zval *data, int style, xmlNodeP
|
|||
|
||||
if (Z_TYPE_P(data) == IS_ARRAY) {
|
||||
ZEND_HASH_FOREACH_KEY_VAL_IND(Z_ARRVAL_P(data), int_val, key_val, temp_data) {
|
||||
|
||||
item = xmlNewNode(NULL, BAD_CAST("item"));
|
||||
xmlAddChild(xmlParam, item);
|
||||
key = xmlNewNode(NULL, BAD_CAST("key"));
|
||||
|
@ -2702,6 +2701,7 @@ static xmlNodePtr to_xml_map(encodeTypePtr type, zval *data, int style, xmlNodeP
|
|||
smart_str_free(&tmp);
|
||||
}
|
||||
|
||||
ZVAL_DEREF(temp_data);
|
||||
xparam = master_to_xml(get_conversion(Z_TYPE_P(temp_data)), temp_data, style, item);
|
||||
xmlNodeSetName(xparam, BAD_CAST("value"));
|
||||
} ZEND_HASH_FOREACH_END();
|
||||
|
|
22
ext/soap/tests/bug71711.phpt
Normal file
22
ext/soap/tests/bug71711.phpt
Normal file
|
@ -0,0 +1,22 @@
|
|||
--TEST--
|
||||
Bug #71711: Soap Server Member variables reference bug
|
||||
--SKIPIF--
|
||||
<?php require_once('skipif.inc'); ?>
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
$client = new class(null, [ 'location' => '', 'uri' => 'http://example.org']) extends SoapClient {
|
||||
public function __doRequest($request, $location, $action, $version, $one_way = 0) {
|
||||
echo $request;
|
||||
return '';
|
||||
}
|
||||
};
|
||||
$ref = array("foo");
|
||||
$data = new stdClass;
|
||||
$data->prop =& $ref;
|
||||
$client->foo($data);
|
||||
|
||||
?>
|
||||
--EXPECT--
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://example.org" 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:foo><param0 xsi:type="SOAP-ENC:Struct"><prop SOAP-ENC:arrayType="xsd:string[1]" xsi:type="SOAP-ENC:Array"><item xsi:type="xsd:string">foo</item></prop></param0></ns1:foo></SOAP-ENV:Body></SOAP-ENV:Envelope>
|
|
@ -7,15 +7,23 @@ Bug #71996: Using references in arrays doesn't work like expected
|
|||
|
||||
$client = new class(null, ['location' => '', 'uri' => 'http://example.org']) extends SoapClient {
|
||||
public function __doRequest($request, $location, $action, $version, $one_way = 0) {
|
||||
echo $request;
|
||||
echo $request, "\n";
|
||||
return '';
|
||||
}
|
||||
};
|
||||
|
||||
$ref = array("foo");
|
||||
$data = array(&$ref);
|
||||
$client->foo($data);
|
||||
|
||||
$ref = array("def" => "foo");
|
||||
$data = array("abc" => &$ref);
|
||||
$client->foo($data);
|
||||
|
||||
?>
|
||||
--EXPECT--
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://example.org" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:foo><param0 SOAP-ENC:arrayType="SOAP-ENC:Array[1]" xsi:type="SOAP-ENC:Array"><item SOAP-ENC:arrayType="xsd:string[1]" xsi:type="SOAP-ENC:Array"><item xsi:type="xsd:string">foo</item></item></param0></ns1:foo></SOAP-ENV:Body></SOAP-ENV:Envelope>
|
||||
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://example.org" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns2="http://xml.apache.org/xml-soap" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:foo><param0 xsi:type="ns2:Map"><item><key xsi:type="xsd:string">abc</key><value xsi:type="ns2:Map"><item><key xsi:type="xsd:string">def</key><value xsi:type="xsd:string">foo</value></item></value></item></param0></ns1:foo></SOAP-ENV:Body></SOAP-ENV:Envelope>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue