Hey Jörg,
danke nochmal für Deine Antwort. Auch wenn ich noch nicht ganz gesehen habe, wie das zu meinem Beitrag passt, ist es dennoch interessant :-)
Meine Überlegung ging jetzt dahin, ob man das nicht generell auch auf solche Formate wie JSON übertragen kann. Das würde bedeuten, dass z.B. JSON innerhalb JavaScript Verwendung findet, außer für Austauschzwecke aber nichts in PHP zu suchen hätte.
Die Sache ist doch die:
"JSON" heisst "Javascript Object Notation". Stammt, wenn man so will, nativ aus Javascript.
Zumindest war es ursprünglich so gedacht, dass jede JSON gleichzeitig gültiges JavaScript ist.
Und speichert angeblich Java-Skript-Objekte.
Wie kommst Du darauf? Ich kann mir kaum vorstellen, dass das mal offiziell so kommuniziert wurde. Unabhängig davon: Nach meinem Verständnis ist es auch so, dass Objekte nur zur Laufzeit eines Programms existieren können. Gespeichert werden kann somit nur ein Objekt-Zustand. Da lasse ich mich aber gerne eines besseren belehren.
Wie weit es damit wirklich her ist zeigt das hier: [Beispiel]
letzter Alert:
{"val1":6,"val2":0,"lastErg":false,"lastErrorNbr":0,"lastErrorMsg":"","LastErrNbr":1,"LastErrMsg":"Division durch Null"}
Von wegen "Object"- Notation! Es werden entggeen dem, was der Name erwarten lässt, nur die Eigenschaften, nicht die Methoden "stringifiziert"!
Es ist nur ein Name. Ich persönlich hätte auf jeden Fall nicht gedacht, dass das komplette Objekt "verstringt" wird (s.o.).
Wenn Du z.B. eine andere Notation, z.B. die Musik-Notation (a.k.a. Notenschrift) nimmst: Da speicherst Du ja auch nur die veränderlichen Dinge, also die Noten selbst und packst nicht auch noch das Klavier mit rein, denn das würde a) arg schwer werden (hier: großer Overhead) und b) könntest Du die Noten dann nicht mehr auf der Trompete spielen (hier: andere Programmiersprache).
Aber unabhängig davon ist der Name ja auch nicht wirklich falsch: Mit diesen Informationen kann ein Objekt wiederhergestellt werden.
Soweit ich das verstehe hat das seinen Grund, weil in Javascript arrays, insbesondere assoziative Arrays (und sogar Strings) nicht wirklich Variablen sondern bereits Objekte sind.
Das dürfte nicht der Grund sein. Auch wenn das mit den Arrays stimmt, ich aber gerade den Bogen von "speichert keine Methoden" zu "Arrays" nicht hinbekomme.
Warum nur die Eigenschaften gespeichert werden dürfte aber folgende Gründe haben: Erstens zur Schonung der Ressourcen. Du wärst sicher - völlig zurecht - einer der ersten, die sich beschweren würden, wenn JSON tausendmal die Methoden mit speichern bzw. versenden würde, obwohl die sich nicht ändern ;-) Zur Wiederherstellung des Objekts reichen die veränderlichen Eigenschaften. Zweitens wäre es unsinnig, wenn JSON als Austauschformat genutzt würde. Vielleicht willst Du ja auf der anderen Seite was völlig anderes mit den Daten anstellen!? Außerdem: Was kann ich beispielsweise mit JavaScript-Methoden oder -Objekten in PHP anfangen und umgekehrt!?
Aber um die Inhalte von (assoziativen) Arrays zu transportieren ist es eine Klasse-Sache, so lange man sich daran hält, dass es für JSON.stringify inzwischen auch schon die zweite Vorschrift gibt, was auf php.net ganz nett erklärt wird. Das betrifft aber nur die Übertragung "skalarer Typen" ("Skalare" nennt man in Perl einfache Variablen) oder gleich von "NULL"-Werten. Nichts davon macht mir aber Sorgen, denn es gäbe, so die Gefahr bestände, die Konstante JSON_FORCE_OBJECT
Skalare Typen dürfte es in den meisten Programmiersprachen geben, das heißt ja nichts anderes als dass die Variable nur einen Wert enthält (in Anlehnung an das mathematische Skalar).
Eines noch. JSON ist auch ein Klasse-Daten-Transportcontainer. Viele Dienste der Google-API benutzen z.B. JSON für die Antworten. Das lässt sich fummelfrei auswerten.
Ja, ist es.
"Endgeil!" sag ich nur :)
Ja, wenn es zum Anwendungszweck passt, bin ich völlig Deiner Meinung ;-)
Gruß, Dennis