我使用 ZendFramework 在 Wordpress 中创建了一个完整的插件,现在我想公开一个 Web 服务来访问数据,因为我需要创建 ac# 导入应用程序。
我面临的问题是,即使我将 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();
我将模型事件映射到事件。所以我的 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[] complexe 类型和 models_event complexe 类型......我都搞砸了......为什么要这样做?