echo 'Error: ' . $ret->getMessage(); } else { echo 'Quotient is ' . $ret; } echo "\n"; /* The SOAPStruct class is defined in example_types.php. */ require_once 'example_types.php'; $struct = new SOAPStruct('test string', 123, 123.123); /* Send an object, get an object back. Tell the client to translate to classes * we provide if possible. */ $soapclient->_auto_translation = true; /* You can explicitly set the translation for a specific * class. auto_translation works for all cases, but opens ANY class in the * script to be used as a data type, and may not be desireable. Both can be * used on client or server. */ $soapclient->setTypeTranslation('{http://soapinterop.org/xsd}SOAPStruct', 'SOAPStruct'); /* Calling echoStruct. */ $ret = $soapclient->call('echoStruct', array('inputStruct' => $struct->__to_soap()), $options); // echo $soapclient->getWire(); print_r($ret); /* Calling echoStructAsSimpleTypes. * PHP doesn't support multiple return values in function calls, so we must do * a little work to make it happen here, for example returning an array * instead. This requires knowledge on the developers part to figure out how * they want to deal with it. */ $ret = $soapclient->call('echoStructAsSimpleTypes', array('inputStruct' => $struct->__to_soap()), $options); // echo $soapclient->getWire(); if (PEAR::isError($ret)) { echo 'Error: ' . $ret->getMessage(); } else { list($string, $int, $float) = array_values($ret);