将对象数组作为param传递给SOAP函数和phpwsdl


Pass array of objects as param to SOAP function and php-wsdl

我正在尝试设置一个SOAP服务器,该服务器具有一个读取对象数组作为参数的函数。我正在使用phpwsdl生成WSDL。这是我的方法:

/**
 * TStanMag
 * 
 *
 * @pw_set nillable=false The next element can't be NULL
 * @pw_element string $kodTowaru Kod towaru
 * @pw_set nillable=false The next element can't be NULL
 * @pw_element float $ilosc Dostępna ilość
 * @pw_complex TStanMag Pozycja stanu magazynowego
 */
class TStanMag {
    public $kodTowaru;
    public $ilosc;
};

/**
 * Aktualizacja stanów magazynowych
 * 
 * @param string $key1 Klucz 1
 * @param string $key2 Klucz 2
 * @param TStanMag[] $stany Tabela stanów magazynowych
 * @param int $store_id
 * @return TResult[] Response
 */
public function AktualizujStanyMagazynowe($key1, $key2, $stany, $store_id = 0) {
...
}

但在WSDL中,我看到的是这种类型,而不是类型数组:

<wsdl:part name="stany" type="tns:TStanMag[]">
<s:documentation>Tabela stanów magazynowych</s:documentation>
</wsdl:part>

在SoapUI 中也收到警告

Thu Mar 19 21:04:38 CET 2015:WARN:Failed to find type [{http://localhost/symsync/}TStanMag[]]

我该怎么解决这个问题?

与此同时,我解决了这个问题。下面的工作代码。

/**
 * TStanMag
 * 
 *
 * @pw_set nillable=false The next element can't be NULL
 * @pw_element string $kodTowaru Kod towaru
 * @pw_set nillable=false The next element can't be NULL
 * @pw_element float $ilosc Dostępna ilość
 * @pw_complex TStanMag Pozycja stanu magazynowego
 */
class TStanMag {
    public $kodTowaru;
    public $ilosc;
};
/**
 * TStanMagArray
 * 
 *
 * @pw_element TStanMag $TStanMag Kod towaru
 * @pw_complex TStanMagArray Tablica pozycji stanu magazynowego
 */
class TStanMagArray {
    public $TStanMag;
};

/**
     * Aktualizacja stanów magazynowych
     * 
     * @param string $key1 Klucz 1
     * @param string $key2 Klucz 2
     * @param TStanMagArray $stany Tabela stanów magazynowych
     * @param int $store_id
     * @return TResultArray Response
     */
    public function AktualizujStanyMagazynowe($key1, $key2, $stany, $store_id = 0) {