|  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #45404 SoapClient.__getTypes don't care about inheritance
Submitted: 2008-07-01 14:42 UTC Modified: 2012-08-20 02:02 UTC
Avg. Score:4.6 ± 0.5
Reproduced:29 of 29 (100.0%)
Same Version:3 (10.3%)
Same OS:3 (10.3%)
From: oamblet at vmware dot com Assigned:
Status: Open Package: SOAP related
PHP Version: 5.2.6 OS: MacOSX 10.5
Private report: No CVE-ID: None
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If this is not your bug, you can add a comment by following this link.
If this is your bug, but you forgot your password, you can retrieve your password here.
Bug Type:
From: oamblet at vmware dot com
New email:
PHP Version: OS:


 [2008-07-01 14:42 UTC] oamblet at vmware dot com
the __getTypes() function return a list of structs which represents the 
various types from the parsed WSDL.

However, the inherited attributes are not listed in the struct. It 
becomes hard to introspect a WSDL file with this __getTypes() give this 

Reproduce code:
Given this WSDL fragment:

<xs:element name="Entry" type="tns:Entry"/>
<xs:element name="ManagedEntry" type="tns:ManagedEntry"/>
<xs:complexType name="ManagedEntry">
    <xs:extension base="tns:Entry">
        <xs:element minOccurs="0" name="id" type="xs:string"/>
        <xs:element minOccurs="0" name="stringRepresentation" type="xs:string"/>
<xs:complexType name="Entry">
    <xs:element minOccurs="0" name="name" type="xs:string"/>
    <xs:element maxOccurs="unbounded" minOccurs="0" name="properties" nillable="true" type="tns:EntryProperty"/>
    <xs:element minOccurs="0" name="type" type="xs:string"/>

$client = new SoapClient("http://x.x.x.x/echo?WSDL");

Expected result:
  struct ManagedEntry {
   string id;
   string stringRepresentation;
   string name;
   EntryProperty properties;
   string type;

  struct Entry {
   string name;
   EntryProperty properties;
   string type;

Actual result:
  struct ManagedEntry {
   string id;
   string stringRepresentation;

  struct Entry {
   string name;
   EntryProperty properties;
   string type;


Add a Patch

Pull Requests

Add a Pull Request


AllCommentsChangesGit/SVN commitsRelated reports
 [2008-07-01 14:59 UTC] oamblet at vmware dot com
Perhaps a good alternative could be to add the extension information in 
the output of __getTypes().
 [2009-04-28 18:44 UTC]
Please try using this CVS snapshot:
For Windows:

 [2009-05-06 01:00 UTC] php-bugs at lists dot php dot net
No feedback was provided for this bug for over a week, so it is
being suspended automatically. If you are able to provide the
information that was originally requested, please do so and change
the status of the bug back to "Open".
 [2011-02-11 08:23 UTC] ujl at topdanmark dot dk

I've same problem. I'm using a WSDL generator which read the WSDL file and the extension doesn't work. I've tried with windows PHP 5.2.17 and PHP 5.3.5. Is the problem solved on the *nix platform and not Windows?

The problem is extactly the same as described by oamblet 2008-07-01 and I didn't understand the issue is not solved in the windows version of PHP??
 [2011-07-19 18:33 UTC] abel dot silva at gmail dot com

I'm having exactly the same problem.
php 5.3.0 on windows
 [2012-05-11 11:40 UTC] patkoscsaba at syneto dot net
I can confirm this bug is still present with PHP 5.3.10 on OpenIndiana.
 [2012-08-20 02:00 UTC] bkfake-php at yahoo dot com
I've just encountered this bug/shortcoming.

Thought it deserved a "bump"

the original report from 4 years ago states this bug makes it "hard".
I think the mor accurate word is "impossible"
 [2012-08-20 02:02 UTC]
-Status: No Feedback +Status: Open
 [2013-03-09 12:32 UTC] lucky_tomov at hotmail dot com
Seeing the same bug in php 5.3.3 on Ubuntu.
 [2017-11-16 04:24 UTC] chris at golfclub dot com dot au
Seeing this on php 7.1.8 on macOS 10.13.1
 [2018-02-02 20:41 UTC] info at tirus dot eu
Still not working. On WIN and Linux PHP 7.1 and 7.2 i have the same problem at now
 [2018-07-13 15:43 UTC] code at joshua-behrens dot de
After debugging through the source code of the php soap extension I found the behaviour locked down onto the namespaces. The given example from oamblet works perfectly if the posted schema has a different targetNamespace than the wsdl.

Although the output refers the parent as a property with an underscore as name.

After reading the RFC for WSDL 2.0 I was still clueless whether this behaviour is correct. I assume not as the WSDLs of the SOAP services I usally request share the same namespace with their schemes.

Would allowing the same namespace be correct?
 [2019-12-04 10:13 UTC] karol dot wegner at netcall dot com
PHP 7.2.17-0ubuntu0.18.04.1


<xsd:complexType xmlns:xsd='' name='WSResponse'>
  <xsd:sequence minOccurs='1' maxOccurs='1'>
    <xsd:element name='ErrorCode' type='xsd:int' />
    <xsd:element name='ErrorDescription' type='xsd:string' minOccurs='0' />
    <xsd:element name='SuccessFlag' type='xsd:boolean' />
<xsd:complexType xmlns:xsd='' name='AddressResponse'>
    <xsd:extension base='tns:WSResponse'>
      <xsd:sequence minOccurs='1' maxOccurs='1'>
        <xsd:element name='Addresses' xmlns:tns='' type='tns:ArrayOfAddress' minOccurs='0' />


struct WSResponse {
  int ErrorCode;
  string ErrorDescription;
  boolean SuccessFlag;
struct AddressResponse {
  ArrayOfAddress Addresses;

__getTypes() AddressResponse definition does not show inherited elements from the WSResponse type it extends (not to mention lack of minOccurs / maxOccurs)

Lack of XML schema extensions support makes the SoapClient not fit for purpose.
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Fri Jun 14 20:01:31 2024 UTC