我正在使用 Zend 框架构建 Web 服务。我正在使用 Zend_Soap_AutoDiscover 类来生成我的 WSDL。我在这个 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>
根据我从网上阅读的理解,nillable="true" 存在,因为任何对象的属性都可以设置为 null。因此,即使 StockItemEntity 对象的所有属性都设置为 null,nillable="true" 也需要维护有效的 XML 文档。
我担心的是这两个属性必须始终传递给 web 方法。是否可以删除“nillable = true”以强制属性不为空?否则有什么方法可以强制这些属性中的非空值。我希望避免在 web 服务端验证它们。
谢谢
亲切的问候
加布里埃尔