Buenas, te gustaría pegar aqui la salida que optienes?
si no estoy mal, pienso que deberias pasar a la llamada es el valor(es) obtenidos desde getAsSOAP().
puedo hacer el ejemplo con l oque planteas, pero me gustaría visualizar cual es tu salida o en su efecto lo que estas haciendo tu en tu propio codigo y/o como lo haces, de esta manera yo lo adapto a mi ejemplo.
Saludos.
Bueno mientras puedes analizar algo asi como esto y me cuentas (recuerda, adaptarlo para lo que realmente necesitas).
Código PHP:
<?php
abstract class SoapWrapper {
public function getAsSOAP() {
foreach($this as $key=>&$value) {
$this->prepareSOAPrecursive($this->$key);
}
return $this;
}
private function prepareSOAPrecursive(&$element) {
if(is_array($element)) {
foreach($element as $key=>&$val) {
$this->prepareSOAPrecursive($val);
}
$element=new SoapVar($element,SOAP_ENC_ARRAY);
}elseif(is_object($element)) {
if($element instanceof SoapWrapper) {
$element->getAsSOAP();
}
$element=new SoapVar($element,SOAP_ENC_OBJECT);
}
}
// ------------------------------------------
// Ejemplo de uso
// ------------------------------------------
class PersonList extends SoapWrapper {
protected $ArrayOfPerson;
}
class Person extends SoapWrapper {
}
$client=new SoapClient("MY WSDL", array( 'soap_version'=>SOAP_1_2, 'trace'=>1, 'classmap' => array('Person' => "Person", 'PersonList' => "PersonList") ));
//$PersonList=new PersonList;
//$PersonList->getAsSOAP();
//Continuas aqui con tus metodos u operaciones.
try
{
// Valores
$nameSpace = "EL ESPACIO DE NOMBRES DE LAS CABECERAS";
$SessionId = "bc1e84c4-b5c4-4713-9476-882ac2fa7897";
// Parametros para la llamada
$parametros = array("LanguageId" => "es_ES", "DestinationName" => "Madrid");
$soapHeader = new SoapHeader($nameSpace,"objectId",$SessionId,0);
echo "<br><hr><br><pre>";
print_r($soapHeader);
echo "</pre><br><hr><br>";
//TODO: reemplazo tu linea por lo que creo intentas hacer.
$PersonList=new PersonList;
$client->MetodoRequerido($PersonList);
//TODO: un pequeño ejemplo de uso
//$client->echoStruct(new SoapParam($PersonList, "inputStruct"));
//TODO: de ser asi entonces pienso que solo deberias pasarlo en la seccion parametros no?
//$resultado = $client->__soapCall("getDestinationSearch", $parametros, NULL, $soapHeader, $output_headers);
}
catch(SoapFault $fault)
{
//echo '<b>Mensaje:</b> ' .$e->getMessage();
echo "<pre>*** ERROR ***<br><br>";
echo "Fault Code : ".$fault->faultcode."<br>";
echo "Fault String : ".$fault->faultstring."<br>";
echo "Fault Actor : ".$fault->faultactor."<br><br>";
echo "</pre><br><br>";
}
?>
espero dar en el punto que requieres... jeje y ahora si comprendas algo de algo. je je je...