soapclient multidimensional functions ejemplo array php soap wsdl

multidimensional - Pasar matriz a la función SOAP en PHP



php soap get functions (2)

Puede usar esta función -v para convertir una matriz en un árbol de objetos:

function array_to_objecttree($array) { if (is_numeric(key($array))) { // Because Filters->Filter should be an array foreach ($array as $key => $value) { $array[$key] = array_to_objecttree($value); } return $array; } $Object = new stdClass; foreach ($array as $key => $value) { if (is_array($value)) { $Object->$key = array_to_objecttree($value); } else { $Object->$key = $value; } } return $Object; }

Al igual que:

$data = array( ''GetResultListRequest'' => array( ''Filters'' => array( ''Filter'' => array( array(''Name'' => ''string'', ''Value'' => ''string''), // Has a numeric key array(''Name'' => ''string'', ''Value'' => ''string''), ) ) ) ); $Request = array_to_objecttree($data);

Saludos,

Parece que no puedo encontrar una manera de crear una solicitud de función con matriz como argumento. Por ejemplo, cómo hago este tipo de solicitud usando PHP SoapClient:

<GetResultList> <GetResultListRequest> <Filters> <Filter> <Name>string</Name> <Value>string</Value> </Filter> <Filter> <Name>string</Name> <Value>string</Value> </Filter> </Filters> </GetResultListRequest> </GetResultList>

¿Es posible invocar esta función sin crear ninguna clase adicional (solo con matrices)? Si no, ¿cuál es la forma más compacta de llamarlo?


Por ejemplo, puedes probar esto:

$data1 = new SampleStruct(); $data1->title="Hello world"; $data1->description="This is a sample description."; $data2 = new SampleStruct(); $data2->title="Hello world 2"; $data2->description="This is a sample description 2."; $client->__soapCall("sampleFunction", array( new SoapParam(new SoapVar(array($data1, $data2) , SOAP_ENC_ARRAY, "SampleStruct_Array", "http://www.w3.org/2001/XMLSchema"), "theSampleFunctionParamName") ));