Delicious Bookmark this on Delicious Share on Facebook SlashdotSlashdot It! Digg! Digg



PHP : Function Reference : WDDX Functions : wddx_serialize_value

wddx_serialize_value

Serialize a single value into a WDDX packet (PHP 4, PHP 5)
string wddx_serialize_value ( mixed var [, string comment] )

Creates a WDDX packet from a single given value.

Parameters

var

The value to be serialized

comment

An optional comment string that appears in the packet header.

Return Values

Returns the WDDX packet, or FALSE on error.

Code Examples / Notes » wddx_serialize_value

chris

When serializing JavaScript objects to interact with PHP objects, you should make the JavaScript object's first entry a php_class_name.
PHP:
class myclass {
   var $name;
   var $age;
   var $ssn;
   ...
   
   function myclass() {
       $this->name = "";
       $this->age = "";
       $this->ssn = "";
       ...
   }
}
JavaScript:
// serialization example code is from the
// WDDX SDK http://www.openwddx.org
function SerializeMsg(name, age, ssn, ...) {
   var MyObj = new Object;
   
   // the following line is necessary in order
   // to deserialize back to a PHP object
   MyObj.php_class_name = "myclass";
   
   MyObj.name = name;
   MyObj.age = age;
   MyObj.ssn = ssn;
   ...
   
   // Create a new serializer "object" to do our work for us
   MySer = new WddxSerializer;
   // Serialize the Message variable into a WDDX Packet
   MyWDDXPacket = MySer.serialize(MyObj);
   // Output WDDX Packet so we can see what it looks like
   return MyWDDXPacket;
}
Now you can use this in a page which is its own form action:
<?php
// don't forget to include the class definition from above!
if (!isSet($wddx_packet))
   $MyObj = new myclass();
else
   $MyObj = wddx_deserialize($wddx_packet);
?>
<html>
<head>
<script language="JavaScript">
<!--
function Init() {
   // sets the form's text-elements
   tmp = document.MyForm;
   
   tmp.name.value = "<? echo $MyObj->name ?>";
   tmp.age.value = "<? echo $MyObj->age ?>";
   tmp.ssn.value = "<? echo $MyObj->ssn ?>";
   ...
}
function SerializeMsg(name, age, ssn, ...) {
// see above!
}
function SubmitForm() {
   // sumbits the form
   tmp = document.MyForm;
   
   tmp.wddx_packet.value =
   SerializeMsg(tmp.name.value, tmp.age.value, tmp.ssn.value,...);
   document.submit();
}
// -->
</script>
</head>
<body>
...
<form name="MyForm"
action="<? echo $PHP_SELF ?>" method="post">
<input name="wddx_packet" type="hidden">
<input name="name" type="text">
<input name="age" type="text">
<input name="ssn" type="text">
...
<input name="SubmitBtn" type="button" onclick="SumbitForm()">
</form>
</body>
</html>
---------------------------------
If you don't provide that first 'php_class_name' in the JavaScript function, then when PHP deserializes it will deserialize into an associative array and not an object instance.
Note that this provides a way to maintain state without
using sessions or cookies - just good old HTML!
Hope this helps!
--
Chris Hansen


Change Language


Follow Navioo On Twitter
wddx_add_vars
wddx_deserialize
wddx_packet_end
wddx_packet_start
wddx_serialize_value
wddx_serialize_vars
wddx_unserialize
eXTReMe Tracker