2011-11-02 86 views
0

我有一个使用PHP/Zend Framework SOAP的有效SOAP服务。我遇到的问题是WSDL需要实现“xsd:decimal”而不是“xsd:int”。Zend框架SOAP WSDL

在下面的代码片段使用自动搜索方法:

/* @var decimal */ 
public $prize; 

返回以下错误:

Cannot add a complex type decimal that is not an object or where class could not be found in 'DefaultComplexType' strategy.

使用类映射似乎并没有解决问题。有没有办法使用AutoDiscovery方法使用“xsd:decimal”?

下面的代码片段工作正常,但显示:在WSDL “XSD INT”:

/* @var int */ 
public $prize 

回答

1

使用浮动

PHP和双精度浮点数< - > XSD:浮动。

+0

我无法使用浮动。我需要自动生成的WSDL显示“小数”(不要问为什么,这不是我的选择)。 – cnemelka

+0

看来这个服务的SOAP客户端“需要xsd:decimal”。不,我不知道为什么... – cnemelka

0

您不能使用小数。

但您是否尝试过使用名为decimal的复杂类型映射到float?

class decimal 
{ 
/** @var float */ 
public $prize; 
} 

你也需要定义正确的自动发现策略:

$autodiscover = new Zend_Soap_AutoDiscover('Zend_Soap_Wsdl_Strategy_ArrayOfTypeComplex');