`
moqiang02
  • 浏览: 529199 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
文章分类
社区版块
存档分类
最新评论

php 使用serialize() 和 unserialize() 让对象成超级变量

 
阅读更多

手册里面的原话和一些总结:
php函数serialize()与unserialize()说明及案例。想要将已序列化的字符串变回 PHP 的值,可使用unserialize()。serialize()可处理除了resource之外的任何类型。甚至可以serialize()那些包含了指向其自身引用的数组。你正serialize()的数组/对象中的引用也将被存储。
serialize()返回字符串,此字符串包含了表示value的字节流,可以存储于任何地方。这有利于存储或传递 PHP 的值,同时不丢失其类型和结构。
想要将已序列化的字符串变回 PHP 的值,可使用unserialize()。serialize()可处理除了resource之外的任何类型。甚至可以serialize()那些包含了指向其自身引用的数组。你正serialize()的数组/对象中的引用也将被存储。
当序列化对象时,PHP 将试图在序列动作之前调用该对象的成员函数__sleep()。这样就允许对象在被序列化之前做任何清除操作。类似的,当使用unserialize()恢复对象时, 将调用__wakeup()成员函数。
注:在 PHP 3 中,对象属性将被序列化,但是方法则会丢失。PHP 4 打破了此限制,可以同时存储属性和方法。请参见类与对象中的序列化对象部分获取更多信息。
serialize()和unserialize()在php手册上的解释是:
serialize — Generates a storable representation of a value
serialize — 产生一个可存储的值的表示
unserialize — Creates a PHP value from a stored representation
unserialize — 从已存储的表示中创建 PHP 的值
serialize,翻译过来叫“连载, 使连续”,通常称它为“序列化”
这个函数很好用,特别是和unserialize一起配合使用
我觉得比较有用的地方就是将数据存入数据库或记录在文件中的时候
当然这种数据必须是比较复杂的(不复杂也不需要serialize了,我觉得起码得是一个一数组),而且是数据库中的非“索引或主键”,当然最好这个数据库字段在系统中和任何搜索程序无关,当然serialize后的数据其实还是能够搜索的,因为具体的数据并没有被加密或改变

实例: (只谈对象,其他的就应该很容易了)
CPerson.php

<?php 
class Person 
{ 
    public $age; 

    function __construct($age) 
    { 
        $this->age=$age; 
    } 

    function walk() 
    { 
        echo "I'm walking...!"; 
    } 

} 
?>

test0.php 在这里保存对象

<?php 
session_start(); 
include_once './CPerson.php'; 

$person=new Person(22); 
$b=serialize($person); 

$_SESSION["object"]=$b; 

?>

test1.php 访问对象

<?php 
session_start(); 
include_once './CPerson.php'; 
$p=$_SESSION['object']; 
$a=unserialize($p); 
$a->walk(); 
echo $a->age; 
?>



分享到:
评论

相关推荐

    PHP中json_encode、json_decode与serialize、unserialize的性能测试分析

    据他所说,json_encode和json_decode比内置的serialize和unserialize函数要高效。 于是我决定动手实验,证实一下同事所说的情况是否属实。 实验分别在PHP 5.2.13和PHP 5.3.2环境下进行。 用同一个变量,分别用以上...

    php序列化函数serialize() 和 unserialize() 与原生函数对比

    以下示例,使用 serialize() 和 unserialize() 函数: // a complex array $myvar = array( 'hello', 42, array(1,'two'), 'apple' ); // convert to a string $string = serialize($myvar); echo $string; /* ...

    java序列化对象传给php

    android(包括java)序列化一个对象传给php去做处理,或是接到php的序列化的对象在java中做处理的工具jar包以及使用方法. 使用方法: byte[] b = null; b = PHPSerializer.serialize(一个对象);//将一个对象序列化后返回...

    详解PHP序列化反序列化的方法

    经常看到一些配置文件里面存放的是一些类似带有格式的变量名称和值,其实就是一个序列化的过程,在需要用到这些数据库的时候会进行一个反序列化过程,就是将这个字符串再还原成他原来的数据结构。下面说说php 如何...

    PHP多种序列化/反序列化的方法详解

    摘要:序列化是将变量转换为可保存或传输的字符串的...1. serialize和unserialize函数 这两个是序列化和反序列化PHP中数据的常用函数。 &lt;?php $a = array('a' =&gt; 'Apple' ,'b' =&gt; 'banana' , 'c' =&gt; 'Coconut');

    php-serializer:以任何格式序列化PHP变量,包括对象。 也支持反序列化

    为什么不进行serialize()和unserialize() ? 这些本机函数依赖于在运行时加载并可用序列化的类,并将非序列化过程与PHP平台相关联。 如果序列化的字符串包含对无法实例化的类的引用(例如,类被重命名,移动了名称...

    解析PHP多种序列化与反序列化的方法

    反序列化就是在适当的时候把这个字符串再转化成原来的变量使用。这两个过程结合起来,可以轻松地存储和传输数据,使程序更具维护性。1. serialize和unserialize函数这两个是序列化和反序列化PHP中数据的常用函数。...

    PHP序列化的四种实现方法与横向对比

    反序列化就是在适当的时候把这个字符串再转化成原来的变量使用。这两个过程结合起来,可以轻松地存储和传输数据,使程序更具维护性。 1. serialize和unserialize函数 这两个是序列化和反序列化PHP中数据的常用函数...

    php将数组存储为文本文件方法汇总

    (1)利用serialize 将数组序列化存储为文本文件,调用时候再使用unserialize 还原 &lt;?php $file='./cache/phone.php'; $array=array('color'=&gt; array('blue','red','green'),'size'=&gt; array('small','medium','...

    php中序列化与反序列化详解

    serialize() 把变量和它们的值编码成文本形式 unserialize() 恢复原先变量 eg: $stooges = array('Moe','Larry','Curly'); $new = serialize($stooges); print_r($new);echo ; print_r(unserialize($new)); ...

    PHP 序列化和反序列化函数实例详解

    serialize() 把变量和它们的值编码成文本形式 unserialize() 恢复原先变量  1.创建一个$arr数组用于储存用户基本信息,并在浏览器中输出查看结果; $arr=array(); $arr['name']='张三'; $arr['age']='22'; $arr['...

    PHP常见的序列化与反序列化操作实例分析

    serialize() 把变量和它们的值编码成文本形式 unserialize() 恢复原先变量  2.序列化例子 输入输出 $arr=array(); $arr['name']='张三'; $arr['age']='22'; $arr['sex']='男'; $arr['phone']='123456789'; $arr['...

    JSON为什么那样红为什么要用json(另有洞天)

    php先天具备持久化特性每个变量都可以serialize()和unserialize()与字符串相互转化。 持久化带来最直接的好处就是复杂对象存储和传输,衡量持久化机制的优劣的重要标准是效率。 WEB2.0的推动: Ajax引发了W

    PHP序列化操作方法分析

    序列化就是将变量数据转换为字符串(跟类型转换机制不同),一般应用于存储数据(文件),然后在别的情形下恢复(反序列化) 序列化: $val = serialize($var); file_put_contents('./*.txt',$val); 反序列化: $...

Global site tag (gtag.js) - Google Analytics