mirror of
https://github.com/php/php-src.git
synced 2025-08-16 05:58:45 +02:00
Encoding of ommited tail parameters as NULLs
This commit is contained in:
parent
f7ca7c469a
commit
168dc362df
2 changed files with 45 additions and 17 deletions
|
@ -1071,6 +1071,15 @@ static xmlNodePtr to_xml_object(encodeTypePtr type, zval *data, int style, xmlNo
|
|||
sdlTypePtr sdlType = type->sdl_type;
|
||||
TSRMLS_FETCH();
|
||||
|
||||
if (!data || Z_TYPE_P(data) == IS_NULL) {
|
||||
xmlParam = xmlNewNode(NULL,"BOGUS");
|
||||
xmlAddChild(parent, xmlParam);
|
||||
if (style == SOAP_ENCODED) {
|
||||
xmlSetProp(xmlParam, "xsi:nil", "1");
|
||||
}
|
||||
return xmlParam;
|
||||
}
|
||||
|
||||
if (sdlType) {
|
||||
prop = NULL;
|
||||
if (Z_TYPE_P(data) == IS_OBJECT) {
|
||||
|
|
|
@ -2587,11 +2587,9 @@ static int serialize_response_call2(xmlNodePtr body, sdlFunctionPtr function, ch
|
|||
} else {
|
||||
param = serialize_parameter(parameter, ret, 0, "return", use, body TSRMLS_CC);
|
||||
if (function && function->binding->bindingType == BINDING_SOAP) {
|
||||
sdlParamPtr *sparam;
|
||||
|
||||
if (zend_hash_index_find(function->responseParameters, 0, (void **)&sparam) == SUCCESS && (*sparam)->element) {
|
||||
ns = encode_add_ns(param, (*sparam)->element->namens);
|
||||
xmlNodeSetName(param, (*sparam)->element->name);
|
||||
if (parameter && parameter->element) {
|
||||
ns = encode_add_ns(param, parameter->element->namens);
|
||||
xmlNodeSetName(param, parameter->element->name);
|
||||
xmlSetNs(param, ns);
|
||||
}
|
||||
} else if (strcmp(param->name,"return") == 0) {
|
||||
|
@ -2619,11 +2617,9 @@ static int serialize_response_call2(xmlNodePtr body, sdlFunctionPtr function, ch
|
|||
} else {
|
||||
param = serialize_parameter(parameter, *data, i, param_name, use, body TSRMLS_CC);
|
||||
if (function && function->binding->bindingType == BINDING_SOAP) {
|
||||
sdlParamPtr *sparam;
|
||||
|
||||
if (zend_hash_index_find(function->responseParameters, i, (void **)&sparam) == SUCCESS) {
|
||||
ns = encode_add_ns(param, (*sparam)->encode->details.ns);
|
||||
xmlNodeSetName(param, (*sparam)->encode->details.type_str);
|
||||
if (parameter && parameter->element) {
|
||||
ns = encode_add_ns(param, parameter->element->namens);
|
||||
xmlNodeSetName(param, parameter->element->name);
|
||||
xmlSetNs(param, ns);
|
||||
}
|
||||
}
|
||||
|
@ -2911,16 +2907,38 @@ static xmlDocPtr serialize_function_call(zval *this_ptr, sdlFunctionPtr function
|
|||
} else if (style == SOAP_DOCUMENT) {
|
||||
param = serialize_parameter(parameter, arguments[i], i, NULL, use, body TSRMLS_CC);
|
||||
if (function && function->binding->bindingType == BINDING_SOAP) {
|
||||
sdlParamPtr *sparam;
|
||||
|
||||
if (zend_hash_index_find(function->requestParameters, i, (void **)&sparam) == SUCCESS && (*sparam)->element) {
|
||||
ns = encode_add_ns(param, (*sparam)->element->namens);
|
||||
xmlNodeSetName(param, (*sparam)->element->name);
|
||||
if (parameter && parameter->element) {
|
||||
ns = encode_add_ns(param, parameter->element->namens);
|
||||
xmlNodeSetName(param, parameter->element->name);
|
||||
xmlSetNs(param, ns);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (function && function->requestParameters) {
|
||||
int n = zend_hash_num_elements(function->requestParameters);
|
||||
|
||||
if (n > arg_count) {
|
||||
for (i = arg_count; i < n; i++) {
|
||||
xmlNodePtr param;
|
||||
sdlParamPtr parameter = get_param(function, NULL, i, FALSE);
|
||||
|
||||
if (style == SOAP_RPC) {
|
||||
param = serialize_parameter(parameter, NULL, i, NULL, use, method TSRMLS_CC);
|
||||
} else if (style == SOAP_DOCUMENT) {
|
||||
param = serialize_parameter(parameter, NULL, i, NULL, use, body TSRMLS_CC);
|
||||
if (function && function->binding->bindingType == BINDING_SOAP) {
|
||||
if (parameter && parameter->element) {
|
||||
ns = encode_add_ns(param, parameter->element->namens);
|
||||
xmlNodeSetName(param, parameter->element->name);
|
||||
xmlSetNs(param, ns);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (head) {
|
||||
zval** header;
|
||||
|
@ -3026,8 +3044,9 @@ static xmlNodePtr serialize_parameter(sdlParamPtr param, zval *param_val, int in
|
|||
xmlNodePtr xmlParam;
|
||||
char paramNameBuf[10];
|
||||
|
||||
if (Z_TYPE_P(param_val) == IS_OBJECT &&
|
||||
Z_OBJCE_P(param_val) == soap_param_class_entry) {
|
||||
if (param_val &&
|
||||
Z_TYPE_P(param_val) == IS_OBJECT &&
|
||||
Z_OBJCE_P(param_val) == soap_param_class_entry) {
|
||||
zval **param_name;
|
||||
zval **param_data;
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue