soap webservice php 客户端参数初始化
soap webservice php client parameters initialization
当我使用初始化变量作为参数调用远程方法时遇到问题然后我在结果中什么也得不到,但是当我传递一个值作为参数时一切正常!这是 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);
您应该在 PHP 中阅读一些关于 scopes 的内容。您的变量 client
未在您的函数中设置,因为那是另一个范围。有一些解决方案可以解决这个问题。您可以使用 global
获取变量,但这并不是很酷。
function getFirstName($code){
global $client;
$firstname = $client->getFirstName(array('code' => $code));
return $firstname->return;
}
你不应该那样做。当你使用全局变量时,你不知道你的变量来自哪里。
另一种解决方案是将您的变量定义为函数参数。
function getFirstName($code, $client) {
那就好多了。如果您使用 classes,您可以将变量定义为 class 变量,那就更好了。例如:
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;
}
}
我还没有测试过该代码,但使用 classes 会更好。
当我使用初始化变量作为参数调用远程方法时遇到问题然后我在结果中什么也得不到,但是当我传递一个值作为参数时一切正常!这是 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);
您应该在 PHP 中阅读一些关于 scopes 的内容。您的变量 client
未在您的函数中设置,因为那是另一个范围。有一些解决方案可以解决这个问题。您可以使用 global
获取变量,但这并不是很酷。
function getFirstName($code){
global $client;
$firstname = $client->getFirstName(array('code' => $code));
return $firstname->return;
}
你不应该那样做。当你使用全局变量时,你不知道你的变量来自哪里。
另一种解决方案是将您的变量定义为函数参数。
function getFirstName($code, $client) {
那就好多了。如果您使用 classes,您可以将变量定义为 class 变量,那就更好了。例如:
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;
}
}
我还没有测试过该代码,但使用 classes 会更好。