A function to use for dates with PHP & WDDX
getdate()
$ta="<FORM><TEXTAREA rows=15 cols=80>" ;
$te="</TEXTAREA></FORM>";
$packet_id=wddx_packet_start("Date Example--");
$myDate=getdate();
wddx_add_vars($packet_id,'myDate');
$package=wddx_packet_end($packet_id);
print($ta.$package.$te);
Produces:
<wddxPacket version='1.0'><header><comment>Date Example--</comment></header>
<data><struct><var name='myDate'>
<struct><var name='seconds'><number>12</number></var>
<var name='minutes'><number>55</number></var>
<var name='hours'><number>1</number></var>
<var name='mday'><number>13</number></var>
<var name='wday'><number>1</number></var>
<var name='mon'><number>10</number></var>
<var name='year'><number>2003</number></var>
<var name='yday'><number>285</number></var>
<var name='weekday'><string>Monday</string></var>
<var name='month'><string>October</string></var>
<var name='0'><number>1066031712</number>
</var></struct></var></struct></data></wddxPacket>
wddx_serialize_vars
(PHP 4, PHP 5)
wddx_serialize_vars — Serializa variables en un paquete WDDX
Descripción
Crea un paquete WDDX con una estructura que contiene la representación serializada de las variables pasadas.
Parámetros
Esta función toma un número variables de parámetros.
-
var_name -
Pude ser una cadena, una variable o un array conteniendo una cadena, una variable u otro array, etc.
-
... -
Valores devueltos
Devuelve el paquete WDDX, o FALSE en caso de error.
Ejemplos
Ejemplo #1 Ejemplo wddx_serialize_vars()
<?php
$a = 1;
$b = 5.5;
$c = array("blue", "orange", "violet");
$d = "colors";
$clvars = array("c", "d");
echo wddx_serialize_vars("a", "b", $clvars);
?>
El resultado del ejemplo sería:
<wddxPacket version='1.0'><header/><data><struct><var name='a'><number>1</number></var> <var name='b'><number>5.5</number></var><var name='c'><array length='3'> <string>blue</string><string>orange</string><string>violet</string></array></var> <var name='d'><string>colors</string></var></struct></data></wddxPacket>
kangus at jaga dot us ¶
9 years ago
tychay at alumni dot caltech dot edu ¶
11 years ago
The above feature will cause a slight trouble since the name of the variable will always be "wddxtemp" but you can use preg_replace to fix that.
Also, a better approach is to serialize the entire class. WDDX will that write a reserved "php_class_name" variable which can be used to reconstruct the class during a deserialize.
tychay at alumni dot caltech dot edu ¶
11 years ago
You can use globals to get around the above in classes:
<?php
class Test
{
var $str;
var $wddx;
function Test()
{
$this->str = "test";
$this->wddx_serialize($this->str);
header('Content-Type: text/xml');
echo ($this->wddx);
}
function wddx_serialize($var) {
global $wddxtemp;
unset($wddxtemp);
$wddxtemp = $var;
$this->wddx = wddx_serialize_vars("wddxtemp");
}
}
new Test();
?>
-terry
tychay at alumni dot caltech dot edu ¶
11 years ago
You can use globals to get around the above in classes:
<?php
class Test
{
var $str;
var $wddx;
function Test()
{
$this->str = "test";
$this->wddx_serialize($this->str);
header('Content-Type: text/xml');
echo ($this->wddx);
}
function wddx_serialize($var) {
global $wddxtemp;
unset($wddxtemp);
$wddxtemp = $var;
$this->wddx = wddx_serialize_vars("wddxtemp");
}
}
new Test();
?>
-terry
christian dot knoflach at gmx dot at ¶
12 years ago
Be careful using WDDX - functions on object variables. As I just had to find out the following won't work:
<?php
class Test
{
var $str;
var $wddx;
function Test()
{
$this->str = "test";
$this->wddx = wddx_serialize_vars("this->str");
print(htmlentities($this->wddx));
}
}
new Test();
?>
That's what you'll get:
<wddxPacket version='1.0'><header/><data><struct></struct></data></wddxPacket>
