SOAP - nillable="true"
Baue ich einen web service mit Hilfe des Zend Framework. Ich bin mit dem Zend_Soap_AutoDiscover-Klasse für die generation meiner WSDL. Ich bin mit verschiedenen komplexen Typ in der web-service-Formular Beispiel:
StockItemEntity Klasse
class StockItemEntity {
/** @var string */
public $sStockCode;
/** @var string */
public $sQty;
public function __construct($sStockCode, $sQty){
$this->sStockCode = $sStockCode;
$this->sQty = $sQty;
}
}
WSDL-Definition
<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>
Von dem, was ich verstanden habe, vom Lesen über das web die nillable="true" ist, da die Eigenschaften jedes Objekts werden auf null gesetzt. So ist das nillable="true" halten müssen, um ein gültiges XML-Dokument, auch wenn die StockItemEntity Objekt hat alle seine Eigenschaften auf null gesetzt.
Meine Sorge ist, dass diese beiden Eigenschaften müssen immer übergeben werden, um die web-Methode. Ist es möglich das zu entfernen "nillable= "true" Art von Kraft der Eigenschaften, die nicht null sein? Oder gibt es sonst noch irgendeine Weise zu zwingen, nicht null-Werte in diesen Eigenschaften. Ich hatte gehofft, zu vermeiden, überprüfen Sie auf der webservice-Seite.
Dank
Freundlichen GRÜßEN
Gabriel
InformationsquelleAutor Gabriel Spiteri | 2011-02-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Irgendwann zwischen Zend Framework 1.10.7 und 1.11.0, brachten Sie ein Stück code, der verwendet reflektion, um zu schauen, ob ein default-Wert definiert ein Attribut einer Klasse und, wenn nicht, entscheidet es, dass die Klasse "nillable" und fügt nillable="True" für das Attribut-definition in der WSDL. Dies ist offenbar bedeutete eine Verbesserung der Interoperabilität mit einigen schuppigen version .Net.
Stoppen Zend Framework aus der addition der auf null gesetzte flag, nur initialisieren Sie diese Eigenschaften, wenn Sie deklariert sind, zB.
Hoffe, das hilft.
InformationsquelleAutor JamesG
nillable='true'
zeigt an, dass das element null sein KANN, in einem xml-Dokument-Instanz.Wenn das element in einem xml-Dokument IST null, dann wird dies durch
(das element selbst muss leer sein)
Es klingt wie Sie Sie brauchen, um die xsd zu
nillable='false'
. Auch, der string kann leer sein - wenn Sie möchten, um zu verhindern, dass gegen die leeren Saiten mit derminLength
- Attribut des xsd. Sie können auch Standard verwenden, geben Sie einen default-Wert für die Zeichenfolge, wenn es nicht zur Verfügung gestellt.W3schools hat eine gute Referenz material für die XSD ' s hier
HTH
InformationsquelleAutor StuartLC