2016-09-29 2 views
0

Ich bin auf der Suche nach einer Lösung im SDK verwenden, um alle Schlüssel und Variablen aus dem Antwortobjekt zurückzugeben. Es muss eine Möglichkeit geben, das Antwortobjekt in Ebay SDK PHP (davidtsadler/ebay-sdk-php) zu durchlaufenTraversing "Knoten" oder Multi-Level-Objekte mit Ebay SDK mit davidtsadler/ebay-sdk-php

Da jeder Knoten ein Objekt ist, denke ich, das ist ein 'multidimensionales Objekt' ?? Sogar innerhalb dieser gibt es Arrays. Sehen Sie sich eine kleine Struktur an:

Ich möchte die Knoten-/Schlüsselnamen drucken, um ein Werkzeug "Knoten/Abschnitt auswählen" zu erstellen, und dann eine Schleife für die Werte der ausgewählten Knoten verwenden. Auf diese Weise kann ich jedes verfügbare Feld in einer vollständigen Antwort auswählen, um meine benutzerdefinierten Berichte zu erstellen.

Ich kann mit der Benutzeroberfläche umgehen, aber ich kann nicht scheinen, das Objekt Schlüssel/Werte zurückzugeben, ohne jeden Schlüsselnamen einzeln einzugeben.

für jeden und implodieren mich nur so weit gekommen ... dann hatte ich noch die Namen

Jede Hilfe zu schreiben ist sehr geschätzt.

(diese Probe unterhalb ist nur ein kleiner Bruchteil dieser Antwort Knoten, .. hier ist das vollständige Modell: 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> .... 
+0

Können Sie klarstellen, dass es die Antwort ist, die Sie interessiert? Die Beispiel-XML, die Sie verwendet haben, ist eine Anfrage. –

+0

Hey David, das XML war nur um die Knotenbeschriftungen zu zeigen ... Ich möchte mit meinem SDK PHP auf jeden Knoten zugreifen .. Meine vorgeschlagene Schnittstelle erlaubt mir, jedes Feld auszuwählen, wenn ich den Knoten in die Anfrage einfüge ... Aber es gibt so viele ... Und es scheint, dass wenn du erst einmal zwei oder drei Ebenen in das Objekt bekommen hast, kannst du sie nur mit Namen anstatt mit Schleife über sie aufrufen ... Erzwinge, dass ich jeden beliebigen Namen schreibe ... wenn ich schreibe die Funktion .. das XML für die Anfrage, die ich zur Verfügung stellte, war einfach zu zeigen, wie massiv die Antwort sein kann und wie zeitaufwändig es wäre, jedes Feld zu schreiben, um den Wert zu erhalten. ... – zzipper72

+0

Ich bin auf der Suche nach einer cleveren Lösung, um die Anfragen zu durchlaufen und Feldnamen und Werte zurückzugeben, um später als Teil der Benutzeroberfläche ausgewählt zu werden, um Berichte anzupassen. – zzipper72

Antwort

0

Es gibt eine toArray Methode, die auf einem der Objekte des SDK aufgerufen werden können. Die Eigenschaftsnamen des Objekts werden zu Schlüsseln im assoziativen Array, das zurückgegeben wird.Der Wert für jeden Schlüssel ist der Wert für die Eigenschaft des Objekts.Dieser Wert kann ein anderes assoziatives Array sein, wenn der Wert der Eigenschaft ein anderes Objekt ist oder ein regulärer Wert sein kann array, wenn der Wert ein Array von Werten ist.Verwenden Sie etwas wie array_keys, kann es bedeuten, dass Sie die Eigenschaften eines Objekts iterieren können.Beachten Sie, dass toArray nur einen arr zurückgibt ay, die Eigenschaften enthält, die Werte enthalten. Es werden keine Eigenschaften zurückgegeben, die leer sind.

Anders als toArray gibt es keine echte Möglichkeit, die Eigenschaften eines Objekts zu durchlaufen, da sie mit den magischen __get- und __set-Methoden von PHP implementiert werden. Es kann Möglichkeiten geben, die PHP's refelection-Fähigkeiten verwenden, aber das bedeutet, dass Sie von privaten Details des SDK abhängig sind, die ohne Ankündigung geändert oder entfernt werden können.

+0

Danke David, ich konnte den toArray verwenden ($ arrayResponse = $ response-> OrderArray-> toArray();) und "print" meine Knoten/Array-Schlüsselnamen. (In Zukunft könnte ich diese verwenden, um einzuschränken, welche Includes in der Anfrage gesendet werden), aber jetzt, wie ich erwähnt habe, habe ich diese verwendet, um meine Tabellenspalten basierend auf in den Knoten/Schlüsseln verfügbaren Feldern anzupassen ... ich war überrascht, wie tief einige der Array-Level gingen. Der Versand war 4 oder 5 Ebenen tief, um einen Wert zu erreichen. – zzipper72