php的序列化

xuliehua.php:

<? 

class xx{}

class Test { 
        public $name; 
  public $age;
        //如果没有__contstruct方法,同类名的方法就是构造方法
        public function Test() { 
                $this->name = “xxxxxxxx”; 
                echo “Test方法输出的”;
        }
        //优先当构造方法
        public function __construct($name,$age) { 
                $this->name = $name; 
                $this->age = $age;
        } 
 
  
        public function __sleep() { 
          //一定要返回变量,不然返回的是个空
          //return几个属性,序列化的就是几个属性
         
                $this->name = “sleep”;
                $this->age=”100″;
               // return array(‘name’,'age’);
    return array(“name”);
        } 
       
        public function __wakeup() { 
                //$this->name = “wake”;
               // $this->age=”200″;
              
        } 

$test = new Test(“new”,50); 
print_r($test);
echo “<br>”;
echo serialize($test);
echo “<br>”;
$obj=unserialize(serialize($test));
print_r($obj);
echo “<br>”;
?> 
输出:

Test Object ( [name] => new [age] => 50 )
O:4:”Test”:1:{s:4:”name”;s:5:”sleep”;}
Test Object ( [name] => sleep [age] => )

 

return array(“name”); 改成 return array(‘name’,'age’);

Test Object ( [name] => new [age] => 50 )
O:4:”Test”:2:{s:4:”name”;s:5:”sleep”;s:3:”age”;s:3:”100″;}
Test Object ( [name] => sleep [age] => 100 )

 __sleep()在序列化的被调用,__wakeup()在解序列化的时候被调用,它们都可以对属性进行处理!

xuliehua_use.php:

<?php
header(“Content-Type:text/html;charset=GBK”);

include ‘xuliehua.php’;//或者注释用下面注释部分
 
/*
ini_set(‘unserialize_callback_func’,'mycallback’); // 设置您的回调函数

function mycallback($classname) {
    // 只需包含含有类定义的文件
    // $classname 指出需要的是哪一个类
 
    include ‘xuliehua.php’;
    $classname=”xx”;//手册里这么个意思,不知道为什么指定了xx,不报错,还是去new Test去了?
  
}
*/
 
//好像只要所在类被导入进来了,反序列化就可以找到 对应的类,还原成对应的对象


//如果之前那个字符串存到文件或者数据库,现在获取到了,要解序列化
$serialized_object=’O:4:”Test”:1:{s:4:”name”;s:5:”sleep”;}’;
$xyz=unserialize($serialized_object);

print_r($xyz);
echo “<br>”;
echo $xyz->name;
echo “<br>”;
$xyz->Test();//作为普通方法存在
?>

注释xuliehua.php输出的内容 该文件输出为:

Test Object ( [name] => sleep [age] => )
sleep
Test方法输出的

此条目发表在 Php 分类目录,贴了 标签。将固定链接加入收藏夹。

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>