Bug #43868 [Com]: PHP SOAP - Error when parsing (valid) wsdl file..
| From: | wal3 at mindspring dot com | Date: | Tue, 15 Oct 2013 18:26:47 +0000 |
| Subject: | Bug #43868 [Com]: PHP SOAP - Error when parsing (valid) wsdl file.. | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-182297@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=43868&edit=1
ID: 43868
Comment by: wal3 at mindspring dot com
Reported by: Michael at Sohmen dot de
Summary: PHP SOAP - Error when parsing (valid) wsdl file..
Status: Not a bug
Type: Bug
Package: SOAP related
Operating System: Linux / PHP
PHP Version: 5.2.5
Assigned To: dmitry
Block user comment: N
Private report: N
New Comment:
This problem makes the PHP SoapClient useless for my situation. I need function number 2...
Previous Comments:
------------------------------------------------------------------------
[2008-11-28 14:40:59] dmitry@php.net
Duplicate of bug #31248
------------------------------------------------------------------------
[2008-01-29 12:35:07] Michael at Sohmen dot de
The point is, PHP SOAP parser should at last allow duplicate function definitions - because wsdl
files use this way to serve i.e. overloaded java functions.
But stops parsing with error messages 'function already defined'..
Overloading emulation in PHP is not a big problem.. or works fine without if it's just integer
/ float.
------------------------------------------------------------------------
[2008-01-29 11:46:23] dmitry@php.net
Sorry, but PHP doesn't support overloaded functions and ext/soap is not going to support them
too (at least in nearest future).
You can emulate overloaded functions using doc/lit encoding.
------------------------------------------------------------------------
[2008-01-16 16:42:09] Michael at Sohmen dot de
Description:
------------
Hi,
when parsing a wsdl file with _duplicate_ functions defined by <operation name..>, PHP SOAP
parser stops with following error message:
"Parsing WSDL: <functionname> already defined"
The Problem is - duplicate functions are used with function overloading - and o.k. for the Java SOAP
interface..
Other way, by automated file generation the following code would produce duplicate function
definitions in wsdl, one with 1, second with 2 Params:
function foofunction($a, $optional_b = null)
I append a bit of wsdl-code which dousn't work as expected as an example;
in php_sdl.c I found some lines where most probably the error message is generated, and
zend_hash_add(..) fails.
Greetings,
Michael
Reproduce code:
---------------
// wdsl example - Problem:
[snip]
<message name="foofunction">
<part name="a" type="xsd:int"/>
<part name="optional_b" type="xsd:int"/>
</message>
<message name="foofunction">
<part name="a" type="xsd:int"/>
</message>
operation name="foofunction">
<input message="tns:foofunctionRequest"/>
<output message="tns:foofunctionResponse"/>
</operation>
[snip]
// extract from Source php_sdl.c
static void load_wsdl_ex(zval *this_ptr, char *struri, sdlCtx *ctx, int include TSRMLS_DC)
{
[snip]
} else if (node_is_equal(trav,"message")) {
xmlAttrPtr name = get_attribute(trav->properties, "name");
if (name && name->children && name->children->content) {
if (zend_hash_add(&ctx->messages, (char*)name->children->content,
xmlStrlen(name->children->content)+1,&trav, sizeof(xmlNodePtr), NULL) != SUCCESS) {
soap_error1(E_ERROR, "Parsing WSDL: <message> '%s' already defined",
name->children->content);
[snip]
Actual result:
--------------
Parsing WSDL: <functionname> already defined
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=43868&edit=1