これは私がやりたいことです:
// Pull in the NuSOAP code
require_once('nusoap.php');
// Create the server instance
$server = new soap_server();
// Initialize WSDL support
$server->configureWSDL('server', 'urn:server');
$server->wsdl->addComplexType(
'FilterObject',
'complexType',
'struct',
'all',
'',
array(
'myName' => array('name' => 'myName', 'type' => 'xsd:string'),
'filter' => array('name' => 'filter', 'type' => 'tns:FilterObject[]')
)
);
この構造を持つことができるように、それ自体に FilterObject の配列が必要です。
<myName></myName>
<FilterObject>
<myName></myName>
<FilterObject>
<myName></myName>
<FilterObject>Value</FilterObject>
<FilterObject>
<myName></myName>
<FilterObject>Value</FilterObject>
<FilterObject>Value</FilterObject>
...
</FilterObject>
<FilterObject>Value</FilterObject>
<FilterObject>Value</FilterObject>
<FilterObject>Value</FilterObject>
<FilterObject>Value</FilterObject>
...
</FilterObject>
</FilterObject>
どうすればこれを達成できますか?
私は今、ほぼ2日間苦労しています。私はウェブを検索しましたが、結論は出ませんでした。助けてください。
編集:
これが私がやった方法です。アレックスに感謝します。
循環参照を作成すると思っていたので、これが可能だとは思いませんでした。
また、「FilterObjectArray」は使用可能ですが、C# にプルしたときにクラス オブジェクトとして表示されないことにも注意しました。これは明らかに、配列が「FilterObject」オブジェクトの上に設定され、配列になっている単なるパラメーターであるためです。
これが理にかなっていることを願っています。
$server->wsdl->addComplexType(
'FilterObject',
'complexType',
'struct',
'all',
'',
array(
'myName' => array('name' => 'myName', 'type' => 'xsd:string'),
'filter' => array('name' => 'filter', 'type' => 'tns:FilterObjectArray')
)
);
$server->wsdl->addComplexType(
'FilterObjectArray', // Name
'complexType', // Type Class
'array', // PHP Type
'', // Compositor
'SOAP-ENC:Array', // Restricted Base
array(),
array(
'children' => array('ref' => 'SOAP-ENC:arrayType', 'wsdl:arrayType' => 'tns:FilterObject[]'),
),
'tns:FilterObject'
);