1.string serialize ( mixed $value )— 产生一个可存储的值的表示
  serialize() 返回字符串,此字符串包含了表示 value 的字节流,可以存储于任何地方。
  这有利于存储或传递 PHP 的值,同时不丢失其类型和结构

想要将已序列化的字符串变回 PHP 的值,可使用 unserialize()

@ 序列化数组

  serialize($arr);

在设置cookie的时候可以通过序列化数组的形式传递多个值,然后在接收页面进行反序列化读取

@ 序列化对象

class ren{
private $name;
private $age;
function __construct($name,$age){
$this->name =$name;
$this->age = $age;
}
function show(){
echo "姓名是:{$this->name} 年龄是:{$this->age}";
}
function __sleep(){ //魔术函数 指定序列化那些内容,以数组形式返回,不定义则全部序列化 
return array('name','age');
//return array_keys(get_object_vars($this));
}
}
$zao = new ren("赵六",44);
echo serialize($zao);

  __sleep() 序列化函数调用时自动执行的函数,可以限定要序列化的属性

2.mixed unserialize ( string $str [, string $callback ] ) — 从已存储的表示中创建 PHP 的值
  unserialize() 对单一的已序列化的变量进行操作,将其转换回 PHP 的值。

  返回的是转换之后的值,可为 integer、float、string、array 或 object。如果传递的字符串不可解序列化,则返回 FALSE

备注:

  对象序列化后,只是序列化存储的对象的属性,方法没有被序列化(因为方法是属于类的,不属于单个对象)
  反序列化时,只是把属性反序列化,可使用__wakeup()魔术函数,在成功地重新构造对象之后,PHP 会自动地试图去调用 __wakeup() 成员函数(如果存在的话)。

对象序列化

class db {
private $host;
private $user;
private $pwd;
private $dbname;
private $mysqli;
function __construct($host, $user, $pwd, $dbname) {
$this->host = $host;
$this->user = $user;
$this->pwd = $pwd;
$this->dbname = $dbname;
$this->db();
}
function db() {
$this->mysqli = new mysqli ( $this->host, $this->user, $this->pwd, $this->dbname );
}
function select() {
$this->mysqli->query("SET CHARSET GBK");
$sql = "SELECT id,cname FROM hdw_channel";
$result = $this->mysqli
->query ( $sql );
$rows = array ();
while ( $row = $result->fetch_assoc () ) {
$rows [] = $row;
}
ECHO "<PRE>";
print_r ( $rows );
}
function __wakeup(){ //反序列化自动运行链接数据库
$this->db();
}
}
session_start();
$chanel = new db("localhost",'root','','hdcms');
//$chanel->select();
$_SESSION['channel_obj'] = serialize($chanel);

接收页面,反序列化

session_start();
include '59.php'; //载入此类文件
$channel_obj=unserialize($_SESSION['channel_obj']); 反序列化对象
$channel_obj->select();

  __wakeup() 魔术函数 当反序列化时自动调用(如果类内已经定义)

序列化魔术函数__sleep()和反序列化魔术函数__wakeup()的更多相关文章

  1. PHP 魔术方法 __sleep __wakeup(四)

    串行化serialize可以把变量包括对象,转化成连续bytes数据. 你可以将串行化后的变量存在一个文件里或在网络上传输. 然后再反串行化还原为原来的数据. 你在反串行化类的对象之前定义的类,PHP ...

  2. 魔术方法__sleep 和 __wakeup

    感觉序列化和反序列化用得倒是比较少了,而json_encode和json_decode用得相对多,都是转化成串,进行入库.传输等.json更方便,但是序列化和反序列化结合这两个魔术方法使用倒还行< ...

  3. DRF 序列化组件 序列化的两种方式 反序列化 反序列化的校验

    序列化组件 django自带的有序列化组件不过不可控不建议使用(了解) from django.core import serializers class Books(APIView): def ge ...

  4. 《zw版·Halcon-delphi系列原创教程》 Halcon分类函数009,Measure,测量函数

    <zw版·Halcon-delphi系列原创教程> Halcon分类函数009,Measure,测量函数 为方便阅读,在不影响说明的前提下,笔者对函数进行了简化: :: 用符号“**”,替 ...

  5. Python第七天 函数 函数参数 函数里的变量 函数返回值 多类型传值 函数递归调用 匿名函数 内置函数

    Python第七天   函数  函数参数   函数里的变量   函数返回值  多类型传值     函数递归调用   匿名函数   内置函数 目录 Pycharm使用技巧(转载) Python第一天   ...

  6. [PY3]——字典排序问题总结—(zip()函数、OrderedDict、itemgetter函数)

    问题 怎样在数据字典中执行一些计算操作(从而实现求最小值.最大值或排序等等)? 如何能根据某个或某几个字典字段来排序一个字典列表? 如何创建一个字典,并且在迭代或序列化这个字典的时候能够控制元素的顺序 ...

  7. Sql Server函数全解<二>数学函数

    阅读目录 1.绝对值函数ABS(x)和返回圆周率的函数PI() 2.平方根函数SQRT(x) 3.获取随机函数的函数RAND()和RAND(x) 4.四舍五入函数ROUND(x,y) 5.符号函数SI ...

  8. Sql Server函数全解<一>字符串函数

    阅读目录 1.ASCII()函数 2.CHAR()函数 3.LEFT()函数 4.RIGHT()函数 5.LTRIM()函数 6.RTRIM()函数 7.STR()函数 8.字符串逆序的函数REVER ...

  9. JS函数 -- 功能,语法,返回值,匿名函数,自调用匿名函数,全局变量与局部变量,arguments的使用

    “JavaScript设计得最出色的就是它的函数的实现.” -- <JavaScript语言精粹> 函数包含一组语句,它们是JS的基础模块单元,用于指定对象的行为.一般来说,所谓编程,就是 ...

随机推荐

  1. input text 字体的影响

    字体对input的影响 <html> <head> <meta charset="UTF-8"> </head> <style ...

  2. tensorflow 保存变量,

    代码: #!usr/bin/env python# coding:utf-8"""这个代码的作用是 通过 tensorflow 来计算 y = 0.3x + 0.1 的线 ...

  3. 我的ubuntu配置

    每次装系统都是非常蛋疼的过程,新装的系统还是要配置一下的 首先安装google拼音 sudo apt-get install fcitx fcitx-googlepinyin 然后按装numix主题 ...

  4. Codeigniter数据库操作

    //查询: $query = $this->db_query("SELECT * FROM table"); ================================ ...

  5. yii2

    yii2框架官方说明文档 http://www.yiiframework.com/doc/guide/2.0/zh_cn/caching.page yii2创建您的第一个application应用 h ...

  6. Spring源代码解析(收藏)

    Spring源代码解析(收藏)   Spring源代码解析(一):IOC容器:http://www.iteye.com/topic/86339 Spring源代码解析(二):IoC容器在Web容器中的 ...

  7. sublimeText3安装package control和禁止弹出更新下载弹窗

    1.sublimeText3安装package control import urllib.request,os; pf = 'Package Control.sublime-package'; ip ...

  8. Android时间互换代码

    收藏备用. http://www.oschina.net/code/snippet_575610_22694 /** * 获取现在时间 * * @return 返回时间类型 yyyy-MM-dd HH ...

  9. JS获取和设置光标的位置

    <html> <head> <script language="javascript"> function getCursortPosition ...

  10. Android 中 更新视图的函数ondraw() 和dispatchdraw()的区别

    绘制VIew本身的内容,通过调用View.onDraw(canvas)函数实现 绘制自己的孩子通过dispatchDraw(canvas)实现 View组件的绘制会调用draw(Canvas canv ...