从complexType创建一个空对象或数组

时间:2015-04-30 09:12:07

标签: php web-services soap wsdl

知道我在wsdl中定义了一些complexType,我可以通过http://www.example.com/webservice?wsdl通过SOAP访问,并且这个web服务确实声明了这样的complexType(这只是wsdl的片段):

<xsd:complexType name="customer">
    <xsd:sequence>
        <xsd:element name="firstname" type="xsd:string" minOccurs="0" />
        <xsd:element name="lastname" type="xsd:string" minOccurs="0" />
        <xsd:element name="address" type="typens:address" minOccurs="0" />
    </xsd:sequence>
</xsd:complexType>
<xsd:complexType name="address">
    <xsd:sequence>
        <xsd:element name="street" type="xsd:string" minOccurs="0" />
        <xsd:element name="city" type="xsd:string" minOccurs="0" />
        <xsd:element name="postcode" type="xsd:string" minOccurs="0" />
        <xsd:element name="country" type="xsd:string" minOccurs="0" />
    </xsd:sequence>
</xsd:complexType>

有一种简单的方法可以通过PHP中的SOAP来创建一个空数组或对象,它将是这个complexType的一个实例吗?

预期的行为是

object(stdClass)[1]
  public 'firstname' => null
  public 'lastname' => null
  public 'address' => 
    object(stdClass)[2]
      public 'street' => null
      public 'city' => null
      public 'postcode' => null
      public 'country' => null

或者

array (size=3)
  'firstname' => null
  'lastname' => null
  'address' => 
    array (size=4)
      'street' => null
      'city' => null
      'postcode' => null
      'country' => null

我查看了SoapParamSoapVar文档,但是它们都缺少适当的文档,所以我似乎无法弄清楚是否会这样做。

1 个答案:

答案 0 :(得分:1)

Github上有一个项目旨在解决同样的问题。

查看WSDL2PHPGenerator并查看它是否符合您的要求(该项目还活着并且仅在上个月就安装了大约3000个,所以我认为这是一个安全的选择)。根据它的页面,它需要一个WSDL文件并输出准备使用的类文件。

希望这有帮助!祝你好运。