From:             Wojciech dot Szela at gmail dot com
Operating system: SuSe Linux 9.3
PHP version:      5.0.4
PHP Bug Type:     SOAP related
Bug description:  Problem with inheritance (by extension) in request (methods 
argument)

Description:
------------
There's a problem with objects' class name received by soap server, when
passed in request object is inheriting from other one. For example:
data type definition in wsdl:
<xsd:complexType name="Vehicle">
 <xsd:all>
  <xsd:element name="loadWeight" type="xsd:int"></xsd:element>
 </xsd:all>
</xsd:complexType>

<xsd:complexType name="Car">
 <xsd:complexContent>
  <xsd:extension base="tns:Vehicle">
   <xsd:all>
    <xsd:element name="engineNumber" type="xsd:string"></xsd:element>
   </xsd:all>
  </xsd:extension>
 </xsd:complexContent>
</xsd:complexType>

Second object is inheriting from the first one. And we have operation
defined like that:
<wsdl:message name="addCarResponse">
 <wsdl:part name="return" type="tns:Car"></wsdl:part>
</wsdl:message>
<wsdl:message name="addCarRequest">
 <wsdl:part name="car" type="tns:Car"></wsdl:part>
</wsdl:message>

<wsdl:operation name="addCar">
 <soap:operation soapAction="http://www.foo.com/VehicleService/addCar"/>
  <wsdl:input>
   <soap:body use="encoded" namespace="http://www.foo.com/VehicleService/";
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  </wsdl:input>
  <wsdl:output><soap:body use="encoded"
namespace="http://www.foo.com/VehicleService/";
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  </wsdl:output>
</wsdl:operation>

Soap client is written in Java (axis). Method addCar is invoked with
variable of type Car. Soap server (PHP5) receives proper structure of
object - it has all fields, inherited from father and it's own, but
get_class(passedObject) returns father's class name (Vehicle). Class
mapping is correct. WSDL file is correct. Even returned object, also of
type Car, is correct. 

Reproduce code:
---------------
$classmap = array( 'Car' => 'Car', 'Vehicle' => 'Vehicle' );
class fooService {
 public addCar($car) {
  $fh = fopen("foo.txt","a+"); fwrite($fh,get_class($car)+"\n");
fwrite($fh,var_export($car,true)); fclose($fh);
  $storedObject = $this->storeInDB($car);
  return $storedObject;
 }
ini_set('soap.wsdl_cache_enabled',"0");
$server = new SoapServer('fooService.wsdl',array('classmap' =>
$classmap');
$server->setClass(fooService);
$server->handle();

Expected result:
----------------
File content:
Car
Car: loadWeight->someValue
Car: engineNumber->someOtherValue

Actual result:
--------------
File content:
Vehicle
Vehicle: loadWeight->someValue
Vehicle: engineNumber->someOtherValue

-- 
Edit bug report at http://bugs.php.net/?id=34218&edit=1
-- 
Try a CVS snapshot (php4):   http://bugs.php.net/fix.php?id=34218&r=trysnapshot4
Try a CVS snapshot (php5.0): 
http://bugs.php.net/fix.php?id=34218&r=trysnapshot50
Try a CVS snapshot (php5.1): 
http://bugs.php.net/fix.php?id=34218&r=trysnapshot51
Fixed in CVS:                http://bugs.php.net/fix.php?id=34218&r=fixedcvs
Fixed in release:            http://bugs.php.net/fix.php?id=34218&r=alreadyfixed
Need backtrace:              http://bugs.php.net/fix.php?id=34218&r=needtrace
Need Reproduce Script:       http://bugs.php.net/fix.php?id=34218&r=needscript
Try newer version:           http://bugs.php.net/fix.php?id=34218&r=oldversion
Not developer issue:         http://bugs.php.net/fix.php?id=34218&r=support
Expected behavior:           http://bugs.php.net/fix.php?id=34218&r=notwrong
Not enough info:             
http://bugs.php.net/fix.php?id=34218&r=notenoughinfo
Submitted twice:             
http://bugs.php.net/fix.php?id=34218&r=submittedtwice
register_globals:            http://bugs.php.net/fix.php?id=34218&r=globals
PHP 3 support discontinued:  http://bugs.php.net/fix.php?id=34218&r=php3
Daylight Savings:            http://bugs.php.net/fix.php?id=34218&r=dst
IIS Stability:               http://bugs.php.net/fix.php?id=34218&r=isapi
Install GNU Sed:             http://bugs.php.net/fix.php?id=34218&r=gnused
Floating point limitations:  http://bugs.php.net/fix.php?id=34218&r=float
No Zend Extensions:          http://bugs.php.net/fix.php?id=34218&r=nozend
MySQL Configuration Error:   http://bugs.php.net/fix.php?id=34218&r=mysqlcfg

Reply via email to