Die Frage zielt darauf ab, ob die (spezifischen, in IPS_GetObject NICHT enthaltenen) Objekteigenschaften sauber getrennt gehalten werden und ob darauf auch seitens der Programmentwicklung (auch zukünftig) geachtet wird.
Stand heute ist das ja so (swoeit ich nichts übersehen habe), ausser bei der Instanz mit den ChildrenIDs, die aber identisch zu denen des Objekts selbst sind.
Naja wenn Du mal in die Doku gesehen hättest, wüsstest Du, dass ChildrenIDs bei IPS_GetInstance die IDs der physikalischen Unterinstanzen enthält. Ich würde die Zusatzdaten in einem untergeordneten Array speichern, wie z.B. $obj[‚AdditionalData‘].
aber nicht eben sofort, besonders, wenn man „nur“ den Vergleich von zurückgelieferten Keys überprüft - vielleicht sollte man da ein paar Worte zusätzlich spendieren?
Denn diese Zeile
Dieser Befehl ist nur Sinnvoll bei I/O und Splitter Instanzen
Hi,
ich habe eben über die Posts und die Doku versucht rauszufinden was Du vorhast (habe es also nicht selbst ausprobiert mit den Code Beispielen) und wie es sich auswirken kann - wenn Du die Felder der Arrays vermischt ist das doch Zufall, ob es klappt bzw. abhängig davon wie die Informationen benannt sind? Oder wie arbeitet das array_merge()?
Ich würde das auch wie Horst beschrieben hat in einem untergeordneten oder anderen Array speichern bzw. mir dann ggf. Hilfsfunktionen dazu bauen. Dann müsste man auch nicht den Code überall anpassen, wenn einzelne Systemfunktionen mal anders reagieren würden - man kann dann einfach den Code der Hilfsfunktion anpassen…
Wenn Du auf Objekte zugreifst, musst Du das im Moment oft zweimal tun - einmal mit Get_Object um die (übergeordneten) Objekteigenschaften zu bekommen und dann nochmals mit Get_<objecttype>, um die spezifischen Objekteigenschaften zu bekommen - quasi von einem im Objecttree unsichtbaren Unterobjekt.
So ist’s in IPS gemacht und normalerweise hast Du dann zwei $Objects (was ich eben umständlich finde).
Da ich davon ausgehe, dass die IPS Programmierer nachgedacht haben und Namensüberschneidungen vermeiden (was ich jedenfalls hoffe), ist es ergo kein Problem, die beiden Arrays (immerhin mit den Eigenschaften ein und desselben Objekts!) zu mergen.
Das wird nur dann schief gehen (wie eben bei Instanzen), wenn es überscheidende Key-Namen gibt - wofür ich die Logik nicht so recht erkennen kann und eher von einem Ausrutscher ausgehen würde.
Das angenehme von einem Gesamt-Objekt ist, wie ich schon schrieb, dass mit diesem „Sammelobjekt“ auch jeder Alt-Code und auch von anderen IPS Anwendern unverändert laufen würde (z.B. wenn ich eine Funktionsbibliothek von einem anderen User nutzen würde).
Meine Post zielt also massgeblich darauf ab, zu hinterfragen, ob es denn in Zukunft „zufällige“ Überschneidungen geben wird oder ob es sowas wie eine Eindeutigkeit der Array-Keys je Objekttyp (und Objekt selbst) gibt.
Wenn wir gewollt hätten, dass sich Eigenschaftsnamen nicht überschneiden dürfen, würde ChildrenIDs nicht doppelt vorkommen. Und nein, wir werden das auch nicht ändern und vielleicht, oder vielleicht auch nicht neue doppelte Eigenschaftsnamen einführen.