/** * Recode an hash array into an object * * @param array $received The received hash array * @param PhpWsdlObject $type The type * @param PhpWsdl $server The PhpWsdl object * @return object The object */ private function RecodeParameter($received, $type, $server) { PhpWsdl::Debug('Recode "' . $type->Name . '"'); $obj = new stdClass(); $i = -1; $len = sizeof($type->Elements); while (++$i < $len) { $e = $type->Elements[$i]; $name = $e->Name; if (!in_array($e->Type, PhpWsdl::$BasicTypes)) { $t = $server->GetType($e->Type); if (is_null($t)) { throw new Exception('Could not recode "' . $e->Type . '"'); } if (get_class($t) == 'PhpWsdlEnum') { $basic = in_array($t->Type, PhpWsdl::$BasicTypes); } else { $basic = false; $t = null; } } else { $basic = true; $t = null; } if (!$basic) { PhpWsdl::Debug('Recode element "' . $name . '" as object'); $obj[$name] = $this->RecodeParameter($received[$name], $t, $server); } else { PhpWsdl::Debug('Set element "' . $name . '"'); $obj[$name] = $received[$name]; } } return $obj; }