SOAP 服务器类映射数组不适用于数组中的对象

mVc*_*Vck 5 php soap

我有一个 SOAP 服务器(对 WSDL 使用 Zend_Soap_AutoDiscover),其类映射作为参数传递。

当我的“ManageOrder”函数被调用时,接收到的输入具有类映射中定义的所有成员类型,除了数组中的那些(它们一直被视为“stdclass”对象,即使它们在类映射中指定)。

在 PHP 中声明的类:

class TManageOrderInput // Has been simplified for the sake of readability
{       
    /** @var Torder **/
    public $orderHeader;  // This will be detected as Torder

    /** @var Torderdetailtax[] **/ // orderDetailTaxes[0] will be of type stdclass
    public $orderDetailTaxes;
}
Run Code Online (Sandbox Code Playgroud)

WSDL 中的 orderdetail 和 orderdetail 数组类型:

<xsd:complexType name="ArrayOfTorderdetailtax">
    <xsd:complexContent>
        <xsd:restriction base="soap-enc:Array">
        <xsd:attribute ref="soap-enc:arrayType" wsdl:arrayType="tns:Torderdetailtax[]"/>
        </xsd:restriction>
    </xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="Torderdetailtax">
    <xsd:all>
        <xsd:element name="orderdetailid" type="xsd:string"/>
        <xsd:element name="taxid" type="xsd:string"/>
        <xsd:element name="taxamount" type="xsd:double"/>
    </xsd:all>
</xsd:complexType>
Run Code Online (Sandbox Code Playgroud)

下面是类映射和 SOAP 服务器的创建:

    $classMap = array('classmap' => array( 
       'TManageOrderInput' => 'TManageOrderInput', 
       'TManageOrderOutput' => 'TManageOrderOutput', 
       'Torder' => 'Torder', 
       'Torderdetailtax' => 'Torderdetailtax'
    ));

    $server = new Zend_Soap_Server($wsdl, $classMap);
    $server->setClass('MDGSS');
    $server->handle();
Run Code Online (Sandbox Code Playgroud)

为什么数组中对象的类型仍会被检测为 stdclass?

我是否遗漏了某些东西,或者它只是 SOAP 服务器未处理的东西?