PHP面向对象 – 串行化 反串行化 __sleep __wakeup

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

什么时候使用串行化? 在网络中传输对象的时候 向数据库中保存文件的时候。

全部串行化

1.serialize(对象名) 将指定的类对象串行化 $str=serialize($per) //将per对象串行化,结果返回给$str
2.unserialize(串行化后的返回值) 返回结果是对象 $per=unserialize($str);

局部串行化

3.__sleep() 串行化某对象的部分属性。

4.__wakeup()反串行化时,初始化(其实是修改)对象内容

serialize 串行化与反串行化

class person{
	public $name;
	public $age;
	public function __construct($name,$age){
		$this->name = $name;
		$this->age = $age;
	}
}
$p = new person('lisi',15);
$str = serialize($p);	//串行化,存储对象
setcookie('class',$str);	//串行化的内容可以存储在cookie或者传给其他页面
$unstr = unserialize($_COOKIE['class']);	//反串行化
echo $unstr->name;

局部串行化 __sleep() __wakeup()

__sleep() 串行化某对象的部分属性。

__wakeup()反串行化时,初始化(其实是修改)对象内容

class person{
	public $name;
	public $age;
	public $sex;
	public function __construct($name,$age,$sex){
		$this->name = $name;
		$this->age = $age;
		$this->sex = $sex;
	}
	public function say(){
		echo 'I am '.$this->name.', '.$this->age.' years, '.$this->sex;
	}
	public function __sleep(){
		$arr = array("name","age");
		return $arr;
	}
	public function __wakeup(){
		$this->age = 20;
	}
}
$p = new person('lisi',15,'boy');
$str = serialize($p);	//串行化,存储对象
$unstr = unserialize($str);
echo $unstr->say();

 

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇