文字

wddx_serialize_vars

(PHP 4, PHP 5)

wddx_serialize_varsSerialize variables into a WDDX packet

说明

string wddx_serialize_vars ( mixed $var_name [, mixed $... ] )

Creates a WDDX packet with a structure that contains the serialized representation of the passed variables.

参数

This function takes a variable number of parameters.

var_name

Can be either a string naming a variable or an array containing strings naming the variables or another array, etc.

...

返回值

Returns the WDDX packet, or FALSE on error.

范例

Example #1 wddx_serialize_vars() example

<?php
$a 
1 ;
$b  5.5 ;
$c  = array( "blue" "orange" "violet" );
$d  "colors" ;

$clvars  = array( "c" "d" );
echo 
wddx_serialize_vars ( "a" "b" $clvars );
?>

以上例程会输出:

<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>

用户评论:

[#1] kangus at jaga dot us [2003-10-13 03:57:28]

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>

[#2] tychay at alumni dot caltech dot edu [2002-03-31 00:15:36]

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.

[#3] tychay at alumni dot caltech dot edu [2002-03-30 22:49:01]

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

[#4] tychay at alumni dot caltech dot edu [2002-03-30 22:45:24]

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

[#5] christian dot knoflach at gmx dot at [2001-05-21 15:56:05]

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>

上一篇: 下一篇: