ID: 43868
Updated by: [EMAIL PROTECTED]
Reported By: Michael at Sohmen dot de
-Status: Assigned
+Status: Bogus
Bug Type: SOAP related
Operating System: Linux / PHP
PHP Version: 5.2.5
Assigned To: dmitry
New Comment:
Duplicate of bug #31248
Previous Comments:
------------------------------------------------------------------------
[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] [EMAIL PROTECTED]
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 http://bugs.php.net/?id=43868&edit=1