我準備SOAP服務器和使用後續的碼生成我的WSDL:Zend框架2 SOAP自動發現和複雜類型
//(... Controller action code ...)
if (key_exists('wsdl', $params)) {
$autodiscover = new AutoDiscover();
$autodiscover->setClass('WebServiceClass')
->setUri('http://server/webserver/uri');
$autodiscover->handle();
} else {
$server = new Server(null);
$server->setUri($ws_url);
$server->setObject($this->getServiceLocator()->get('MyController\Service\WebServiceClass'));
$server->handle();
}
//(... Controller action code ...)
但在我的WebService方法的一個予有陣列類型的參數,其中每個元素的類型是「MyOtherClass」,就像如下:
/**
* Add list of MyOtherClass items
*
* @param MyOtherClass[] $items
*
* @return bool
*/
function add($items) {
// Function code here
}
當我嘗試生成WSDL,我得到了如下錯誤:
PHP Warning: DOMDocument::loadXML(): Empty string supplied as input in /<zend framweork path>/Server/vendor/zendframework/zendframework/library/Zend/Soap/Server.php on line 734
或者此異常:
Cannot add a complex type MyOtherClass[] that is not an object or where class could not be found in "DefaultComplexType" strategy.
當我加入到我的代碼是這樣的:
我得到了如下錯誤信息:
Fatal error: Call to a member function getTypes() on a non-object in /<project dir>/vendor/zendframework/zendframework/library/Zend/Soap/Wsdl/ComplexTypeStrategy/AbstractComplexTypeStrategy.php on line 54
在恢復,問題是:我如何知道用作參數的新自定義類型的WSDL?
感謝
'MyOtherClass []'在php上下文中看起來不對。 我想嘗試創建一個包含元素的MyOtherClassCollection對象。 – DanielKhan
'MyOtherClass []'定義一個MyOtherClass對象的數組。對於Zend \ Soap \ AutoDiscover模式'ArrayOfTypeSequence'和'ArrayOfTypeComplex',這在PHP中是完全正常的。 –