address = \$address;\n"; $php .= " \$this->client = new \\SoapClient(\$address, \$param);\n"; $php .= " }\n"; $client = new SoapClient($ops['w']); // var_dump($client->__getTypes()); foreach ($client->__getTypes() as $type) { $parts = explode(' ',$type,3); echo "Generating value type {$parts[1]}\n"; switch ($parts[0]) { case 'struct': preg_match('#\\{(.*)\\}#mis', $parts[2], $match); $elements = explode(';', $match[1]); $php2 = "__getFunctions()); foreach ($client->__getFunctions() as $function) { preg_match('#([a-zA-Z0-9]+) ([a-zA-Z0-9]+)\\((.*)\\)#', $function, $match); echo "Generating method {$match[2]}\n"; $params = isset($match[3]) ? $match[3] : ''; $params = explode(',', $params); $php .= "\n /**\n"; $php .= " * @return {$match[1]}\n"; $php .= " */\n"; $php .= " public function {$match[2]}({$match[3]}) {\n"; $php .= " \$_param = [\n"; foreach ($params as $p) { preg_match('#([a-zA-Z0-9]+)\s+\\$([a-zA-Z0-9]+)#', $p, $match2); $php .= " '{$match2[2]}' => is_object(\$$match2[2]) ? (array) \$$match2[2] : \$$match2[2],\n"; } $php .= " ];\n"; // $php .= " return \$_result;\n"; // $php .= " return \$_result;\n"; $php .= " \$_result = \$this->client->__soapCall('{$match[2]}', \$_param);\n"; $php .= " if (is_object(\$_result)) {\n"; $php .= " \$_result2 = new {$match[1]}();\n"; $php .= " foreach (\$_result as \$_key => \$val)\n"; $php .= " \$_result2->\$_key = \$_result->\$_key;\n"; $php .= " \$_result = \$_result2;\n"; $php .= " }\n"; $php .= " return \$_result;\n"; $php .= " }\n"; } $php .= "}\n"; file_put_contents($dir.'cls.'.strtolower($ops['o']).'.php',$php); echo "Generated\n"; } else help(); function help() { global $argv; echo "Usage:\n"; echo basename($argv[0])."\t -c -o=[target] -w=[wsdl] {-d=[targetDir]}\tgenerates a client from a wsdl adress\n"; }