1

Zend Framework を使用して Web サービスを構築しています。WSDL の生成に Zend_Soap_AutoDiscover クラスを使用しています。この Web サービス フォームの例では、さまざまな複合型を使用しています。

StockItemEntity クラス

class StockItemEntity {
    /** @var string */
    public $sStockCode;
    /** @var string */
    public $sQty;

    public function __construct($sStockCode, $sQty){
        $this->sStockCode = $sStockCode;
        $this->sQty = $sQty;
    }   
}

WSDL 定義

<xsd:complexType name="StockItemEntity">
  <xsd:all>
    <xsd:element name="sStockCode" type="xsd:string" nillable="true"/>
    <xsd:element name="sQty" type="xsd:string" nillable="true"/>
  </xsd:all>
</xsd:complexType>

Web を読んで理解したところから、任意のオブジェクトのプロパティを null に設定できるため、 nillable="true" が存在します。したがって、StockItemEntity オブジェクトのすべてのプロパティが null に設定されている場合でも、有効な XML ドキュメントを維持するには nillable="true" が必要です。

私の懸念は、これら 2 つのプロパティを常に Web メソッドに渡す必要があることです。「nillable = true」を削除して、プロパティがnullにならないようにすることは可能ですか? または、これらのプロパティに null 以外の値を強制する方法はありますか。Web サービス側でそれらを検証する必要がないようにしたいと考えていました。

ありがとう

敬具

ガブリエル

4

2 に答える 2

5

Zend Framework 1.10.7 と 1.11.0 の間のある段階で、リフレクションを使用してクラスの属性に定義されたデフォルト値があるかどうかを確認し、そうでない場合はクラスが「nillable」であると判断するコードを導入しました。 " を追加し、WSDL の属性定義に nillable="True" を追加します。これは明らかに、不安定なバージョンの .Net との相互運用性を改善するためのものです。

Zend Framework が nillable フラグを追加しないようにするには、宣言時にこれらのプロパティを初期化します。

/** @var string */
public $sStockCode = '';
/** @var string */
public $sQty = '';

それが役立つことを願っています。

于 2012-01-16T09:00:42.150 に答える