【问题标题】:Zend Framework Soap WSDLZend 框架肥皂 WSDL
【发布时间】:2011-12-20 16:27:24
【问题描述】:

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

在以下 sn-p 上使用 AutoDiscovery 方法:

/* @var decimal */
public $prize;

返回以下错误:

无法添加不是对象或在“DefaultComplexType”策略中找不到类的复杂类型小数。

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

以下 sn-p 工作正常,但在 WSDL 中显示“xsd:int”:

/* @var int */
public $prize

【问题讨论】:

    标签: zend-framework soap


    【解决方案1】:

    使用浮动

    PHP 浮点数和双精度数 xsd:float.

    【讨论】:

    • 我不能使用浮点数。我需要自动生成的 WSDL 来显示“十进制”(不要问为什么,这不是我的选择)。
    • 似乎该服务的 SOAP 客户端“需要 xsd:decimal”。不,我也不知道为什么……
    【解决方案2】:

    你不能使用小数。

    但是您是否尝试过使用名为 decimal 的复杂类型,它映射到浮点数?

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

    您还需要定义正确的自动发现策略:

    $autodiscover = new Zend_Soap_AutoDiscover('Zend_Soap_Wsdl_Strategy_ArrayOfTypeComplex');
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多