soap webservice php客户端参数初始化

时间:2015-01-16 18:28:07

标签: php soap

我有一个问题,当我使用initilized变量作为参数调用远程方法然后我没有得到resutl,但当我传递一个值作为参数一切正常!这是php中的代码:

$serviceWsdl = 'http://localhost:8080/Test/services/Test?wsdl';
$client = new SoapClient($serviceWsdl);

function getFirstName($code){
    $firstname = $client->getFirstName(array('code' => $code));
    return $firstname->return;
}

$c=1;
$result=getFirstName($c);
var_dump($result);

1 个答案:

答案 0 :(得分:1)

您应该在PHP中阅读一些关于scopes的内容。您的函数中未设置变量client,因为这是另一个范围。有一些解决方案可以解决这个问题。您可以使用global获取变量,但这并不是很酷。

function getFirstName($code){
    global $client;
    $firstname = $client->getFirstName(array('code' => $code));
    return $firstname->return;
}

你不应该这样做。当你使用全局变量时,你不知道你的变量来自哪里。

另一种解决方案是将变量定义为函数参数。

function getFirstName($code, $client) {

那好多了。如果使用类,则可以将变量定义为更好的类变量。例如:

class ApiConnection {
    private $serviceWsdl = 'http://localhost:8080/Test/services/Test?wsdl';
    private $client;

    public function __construct() {
        $this->client = new SoapClient($this->serviceWsdl);
    }

    public function getFirstName($code){
        $firstname = $this->client->getFirstName(array('code' => $code));
        return $firstname->return;
    }
}

我还没有对这些代码进行过测试,但它更适合使用类。