簡體   English   中英

soap webservice php客戶端參數初始化

[英]soap webservice php client parameters initialization

當我使用初始化變量作為參數調用遠程方法時,我遇到了問題,但是在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);

您應該閱讀有關PHP 范圍的知識。 您的變量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;
    }
}

我還沒有測試過該代碼,但是與類一起使用會更好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM