ZendFrameworkを使用してWordpressで完全なプラグインを作成しましたが、ac#インポートアプリケーションを作成する必要があるため、データにアクセスするためのWebサービスを公開したいと思います。
私が直面している問題は、Webサービスリターンのタイプを特定のタイプに設定しても、クラスマップが起動してタイプを変換していないことです。例えば:
/**
* Retursn all events registered on the sgm web interface
*
* @return models_event[]
*/
public function getAllEvents(){
return models_event::getEvents();
}
クラスがmodels_event配列で返されることを定義します。WSDLセクションを起動すると、「models_event」として複合型が追加されますが、何が問題になっていますか。
$autodiscover = new Zend_Soap_AutoDiscover(array(
'classmap' => array(
'event' => "models_event",
),
'encoding' => 'utf-8'
));
$autodiscover->setComplexTypeStrategy(new Zend_Soap_Wsdl_Strategy_ArrayOfTypeComplex());
$autodiscover->setClass('models_webservice');
$autodiscover->handle();
マップされたmodels_eventをeventにクラス分けします。したがって、WSDLは複合型をエクスポートする必要があります。
<xsd:complexType name="ArrayOfmodels_event">
<xsd:complexContent>
<xsd:restriction base="soap-enc:Array">
<xsd:attribute ref="soap-enc:arrayType" wsdl:arrayType="tns:models_event[]"/>
</xsd:restriction>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="models_event">
<xsd:all/>
</xsd:complexType>
しかし、ご覧のとおり、models_event[]複合型とmodels_event複合型を返しています...私はすべて混乱しています...なぜこれを行うのですか?