用PHP处理Soap名称中的点


Handle dots in Soap names with PHP

我有一个wsdl,当在soapui中打开时显示如下方式命名的方法:

  • DTL.GP.03.RC。Method1
  • DTL.GP.04.RC。Method2

我找不到一种方法来使用这些名称与PHP Soapclient。名字里的点搞砸了代码。有人知道怎么做吗?

参见http://php.net/manual/es/function.call-user-func.php。__getFunctions返回可用SOAP函数的列表。

下面是一些例子:

$client = new SoapClient(__DIR__."/helloservice.wsdl");
echo var_export($client->__getFunctions(), true);
$param1 = "nacho";
echo "eg 1'n";
echo call_user_func(array($client, "DTL.GP.03.RC.Method1"), $param1 /* , ... */)."'n";
echo "eg 2'n";
$method="DTL.GP.03.RC.Method1";
echo $client->$method($param1)."'n";
输出:

array (
  0 => 'string DTL.GP.03.RC.Method1(string $firstName)',
)eg 1
Hello nacho
eg 2
Hello nacho

我在PHP 5.5.27中尝试过,但也可以在PHP 5.3中工作。