Dies werden Sie wahrscheinlich erst verstehen, wenn Sie mehrere Jahre an einem großen Softwareprojekt gearbeitet haben. Viele neue Informatik-Majors geben Ihnen eine Antwort mit den richtigen Worten (Kapselung, Funktionalität mit Daten und Wartbarkeit), aber nur wenige werden wirklich verstehen, warum all diese Dinge gut zu haben sind.
Lassen Sie uns einige Beispiele durchgehen.
- Wenn Arrays zurückgegeben wurden, müssen entweder alle Werte im Voraus berechnet werden oder es müssen viele kleine Werte zurückgegeben werden, aus denen Sie die komplexeren Werte erstellen können.
Denken Sie an eine API-Methode, die eine Liste von WordPress-Posts zurückgibt. Diese Beiträge haben alle Autoren, Autoren haben Namen, E-Mail-Adresse, vielleicht sogar Profile mit ihren Biografien.
Wenn Sie alle Beiträge in einem Array zurückgeben, müssen Sie sich entweder darauf beschränken, ein Array von Beitrags-IDs zurückzugeben:
[233, 41, 204, 111]
oder ein massives Array zurückgeben, das ungefähr so aussieht:
[ title: 'somePost', body: 'blah blah', 'author': ['name': 'billy', 'email': 'bill@bill.com', 'profile': ['interests': ['interest1', 'interest2', ...], 'bio': 'info...']] ]
[id: '2', .....]]
Der erste Fall der Rückgabe einer Liste von IDs ist für Sie nicht sehr hilfreich, da Sie dann für jede ID einen API-Aufruf durchführen müssen, um Informationen zu diesem Beitrag zu erhalten.
Im zweiten Fall werden viel mehr Informationen abgerufen, als Sie in 90% der Fälle benötigen, und es wird viel mehr Arbeit geleistet (insbesondere, wenn eines dieser Felder sehr kompliziert zu erstellen ist).
Ein Objekt hingegen kann Ihnen Zugriff auf alle benötigten Informationen gewähren, hat diese Informationen jedoch noch nicht abgerufen. Das Bestimmen der Werte von Feldern kann bei Verwendung eines Objekts träge erfolgen (dh wenn der Wert benötigt wird und nicht vorher).
- Arrays stellen mehr Daten und Funktionen zur Verfügung als beabsichtigt
Kehren Sie zum Beispiel des zurückgegebenen massiven Arrays zurück. Jetzt kann wahrscheinlich jemand eine Anwendung erstellen, die über jeden Wert innerhalb des Post-Arrays iteriert und ihn druckt. Wenn die API aktualisiert wird, um nur ein zusätzliches Element zu diesem Post-Array hinzuzufügen, wird der Anwendungscode unterbrochen, da ein neues Feld gedruckt wird, das wahrscheinlich nicht gedruckt werden sollte. Wenn sich die Reihenfolge der von der API zurückgegebenen Elemente im Post-Array ändert, wird auch der Anwendungscode beschädigt. Die Rückgabe eines Arrays erzeugt also alle möglichen Abhängigkeiten, die ein Objekt nicht erzeugen würde.
Ein Objekt kann Informationen enthalten, die es Ihnen ermöglichen, nützliche Funktionen bereitzustellen. Ein Post-Objekt könnte beispielsweise intelligent genug sein, um die vorherigen oder nächsten Posts zurückzugeben. Ein Array könnte das niemals für Sie tun.
Alle Vorteile der oben genannten Objekte tragen zur Schaffung eines flexibleren Systems bei.
count()oderarray_*()auf ihnen zu funktionieren (zumindest in Bezug auf das Speichern / Zurückgeben von Schlüsseln => Wertdaten). Niemand scheint es zu erwähnen, oder fehlt mir etwas?