繰り返し不可のフィールドを定義する xsd タイプで SOAP Web サービスを定義しました。
このフィールドを何度も指定すると、PHPSoap が例外または何か問題をスローすると予想されますが、配列に変換されます (繰り返しが許可されている場合は予想どおり)。
以下は、WSDL の XSD 部分の抜粋です。
<xsd:complexType name="OrderItem">
<xsd:sequence>
<xsd:element type="xsd:string" name="orderId" maxOccurs="1"/> <!-- maxOccurs is useless as default value is 1 but to be suremore than ... -->
<xsd:element type="xsd:string" name="sku"/>
</xsd:sequence>
</xsd:complexType>
このリクエスト メッセージを送信すると、SOAP レイヤーの背後にある配列を取得しました (例外が発生すると予想していました)。
<OrderItem>
<orderId>12345685</orderId>
<sku>SKU123456</sku>
<orderId>12345686</orderId>
</OrderItem>
以下は、受信した OrderItem オブジェクトの var_dump です。
OrderItem::__set_state(array(
'orderId' =>
array (
0 => '12345685',
1 => '12345686',
),
'sku' => 'SKU123456',
)
これは正常ですか?