使用 davidtsadler/ebay-sdk-php 使用 Ebay SDK 遍历 "nodes" 或多级对象

Traversing "nodes" or multi-level objects with Ebay SDK using davidtsadler/ebay-sdk-php

我正在寻找一种解决方案,以便在整个 SDK 中使用 return 来自响应对象的所有键和值。 Ebay SDK中肯定有遍历响应对象的方法PHP(davidtsadler/ebay-sdk-php).

由于每个节点都是一个对象,我猜这是一个'multidimensional object'?? 即使在其中,也有数组。看下面的小结构:

我想打印 node/key 名称来构建一个 "select node/section" 工具,然后对来自节点 selected 的值使用循环。这样我就可以 select 完整响应中的任何可用字段来构建我的自定义报告。

我可以处理 UI,但如果不单独键入每个键名,我似乎无法将对象获取到 return keys/values。

foreach 和 implode 只让我到目前为止,然后我还得写名字。

(下面的这个示例只是这个响应节点的一小部分;这里是完整的模型:http://developer.ebay.com/DevZone/XML/docs/Reference/eBay/GetMyeBaySelling.html

  <!-- Call-specific Input Fields -->
  <ActiveList> ItemListCustomizationType
    <Include> boolean </Include>
    <IncludeNotes> boolean </IncludeNotes>
    <ListingType> ListingTypeCodeType </ListingType>
    <Pagination> PaginationType
      <EntriesPerPage> int </EntriesPerPage>
      <PageNumber> int </PageNumber>
    </Pagination>
    <Sort> ItemSortTypeCodeType </Sort>
  </ActiveList>
  <BidList> ItemListCustomizationType
     <Include> boolean </Include>
     <IncludeNotes> boolean </IncludeNotes>
     <Pagination> PaginationType
       <EntriesPerPage> int </EntriesPerPage>
       <PageNumber> int </PageNumber>
     </Pagination>
     <Sort> ItemSortTypeCodeType </Sort>
  </BidList>
  <DeletedFromSoldList> ItemListCustomizationType
    <DurationInDays> int </DurationInDays>
    <Include> boolean </Include>
    <IncludeNotes> boolean </IncludeNotes>
    <Sort> ItemSortTypeCodeType </Sort>
  </DeletedFromSoldList>
  <DeletedFromUnsoldList> ItemListCustomizationType
    <DurationInDays> int </DurationInDays>
    <Include> boolean </Include>
    <IncludeNotes> boolean </IncludeNotes>
    <Sort> ItemSortTypeCodeType </Sort>
  </DeletedFromUnsoldList> ....

有一个 toArray 方法可以在任何 SDK 对象上调用。对象的 属性 名称将成为 returned 的关联数组中的键。每个键的值是对象 属性 的值。如果 属性 的值是另一个对象,则该值可以是另一个关联数组,或者如果该值是值数组,则它可以是常规数组。使用 array_keys 之类的东西可能意味着可以迭代对象的属性。请注意,toArray 只会 return 一个包含具有值的属性的数组。它不会 return 任何空属性。

除了 toArray 之外,没有真正的方法来遍历对象的属性,因为它们是使用 PHP 的魔术 __get 和 __set 方法实现的。可能有使用 PHP's refelection 能力的方法,但这意味着您的代码依赖于 SDK 的私有细节,这些细节可以在不通知的情况下更改或删除。