Object.extend(Object,{
toPHP: function(object) {
var type = typeof object;
switch (type) {
case 'undefined':
case 'function':
case 'unknown': return 'N;';
case 'boolean': return 'b:'+(object?'1':'0')+';';
}
if (object === null) return 'N;';
if (object.toPHP) return object.toPHP();
if (Object.isElement(object)) return null;
var ret = [];
for (var property in object) {
var value = Object.toPHP(object[property]);
if (value !== undefined)
ret.push(property.toString().toPHP() + value);
}
return 'a:'+ret.length+':{'+ ret.join('')+'}';
}
});
Date.prototype.toPHP = function() {
return 'i:'+this.getTime()+';';
};
Object.extend(String.prototype,{
toPHP: function () {
var s=this.escapeUTF();
return 's:'+s.length+':"'+s+'";';
},
escapeUTF: function () {
var charCode,ret = '';
for (i=0; i<this.length; i++) {
charCode = this.charCodeAt(i);
ret+=((charCode <= 127) && (charCode >=32))?
this.charAt(i):
('&#x' + charCode.toString(16).toUpperCase() + ';');
}
return ret;
}
});
Array.prototype.toPHP = function () {
var ret=[];
this.each(function (v,i) {
ret.push(i.toPHP()+(!!v.toPHP?v.toPHP():Object.toPHP(v)));
});
return 'a:'+ret.length+':{'+ret.join('')+'}';
}
Number.prototype.toPHP = function () {
return (parseInt(this)==parseFloat(this)?'i':'d')+':'+this.toString()+';';
}