2015-01-16 55 views
1

我有一個問題,當我調用使用初始化變量作爲參數的遠程方法,然後我什麼都沒有在resutl,但是當我傳遞一個值作爲參數一切工作正常!這裏是在PHP代碼:soap webservice 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

你應該在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; 
    } 
} 

我還沒有測試過這個代碼,但是它更好地處理類。

+0

謝謝你......這個問題已經解決..很長一段時間我沒有在php中編碼-_- ...有時候簡單的東西會讓事情看起來很難 –