Moin!
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. Und speichert angeblich Java-Skript-Objekte.
Wie weit es damit wirklich her ist zeigt das hier:
// einfaches Erzeugen eines hübschen Objektes mit nachvollziehbarer Wirkweise:
function classArithmetik(val1, val2) {
// "Instanzierung" aus Parametern und festen Werten
this.val1 = val1;
this.val2 = val2;
this.lastErg = false;
this.lastErrorNbr = 0;
this.lastErrorMsg ='';
// Eine Handvoll niedlicher Methoden:
this.add = function () {
this.lastErg = val1 + val2;
return this.lastErg;
}
this.min = function () {
this.lastErg = val1 - val2;
return this.lastErg;
}
this.multi = function () {
this.lastErg = val1 * val2;
return this.lastErg;
}
this.div = function () {
if (val2) {
this.lastErg = val1 / val2;
return this.lastErg;
} else {
this.lastErg = false;
this.lastErrorNbr = 1;
this.lastErrorMsg = "Division durch Null";
return false;
}
}
}
// Benutzen wir das Ding mal:
var o = new classArithmetik(6, 0);
alert (o.div());
if (false == o.lastErg) {
alert (o.lastErrorNbr + ': ' + o.lastErrorMsg);
}
// und jetzt JSON....
alert (JSON.stringify(o));
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"!
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.
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
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.
"Endgeil!" sag ich nur :)
Jörg Reinholz