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

Create an empty object or array from a complexType

知道我在 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

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

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

查看 WSDL2PHPGenerator 看看它是否符合您的要求(该项目运行良好,仅上个月就有大约 3000 次安装,所以我认为这是一个安全的选择)。根据它的页面,它需要一个 WSDL 文件并输出 class 个可供使用的文件。

希望对您有所帮助!祝你好运。