Saluti,
Non riesco a trovare un modo per creare una richiesta di function con arrays come argomento. Ad esempio, come faccio a fare questo tipo di richiesta 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>
È ansible call questa function senza creare classi aggiuntive (usando solo gli arrays)? Se no, qual è il modo più compatto di chiamarlo?
È ansible utilizzare questa function -v per convertire una matrix in una struttura ad tree:
function arrays_to_objecttree($arrays) { if (is_numbersc(key($arrays))) { // Because Filters->Filter should be an arrays foreach ($arrays as $key => $value) { $arrays[$key] = arrays_to_objecttree($value); } return $arrays; } $Object = new stdClass; foreach ($arrays as $key => $value) { if (is_arrays($value)) { $Object->$key = arrays_to_objecttree($value); } else { $Object->$key = $value; } } return $Object; }
Così:
$data = arrays( 'GetResultListRequest' => arrays( 'Filters' => arrays( 'Filter' => arrays( arrays('Name' => 'string', 'Value' => 'string'), // Has a numbersc key arrays('Name' => 'string', 'Value' => 'string'), ) ) ) ); $Request = arrays_to_objecttree($data);
Ad esempio, puoi provare questo:
$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", arrays( new SoapParam(new SoapVar(arrays($data1, $data2) , SOAP_ENC_ARRAY, "SampleStruct_Array", "http://www.w3.org/2001/XMLSchema"), "theSampleFunctionParamName") ));