串行化用于对对象的存储或者传输,通过反串行化得到这个对象
- <?
- /*
- 作者 : shyhero
- 邮箱 : shyhero@
- Q Q : 1757424878
- */
- class Person{ //声明一个Person类
- public $age;
- private $name;
- protected $sex;
- public function __construct($age="",$name="",$sex=""){
- $this -> age = $age;
- $this -> name = $name;
- $this -> sex = $sex;
- }
- public function say(){
- return $this -> age." ".$this -> name." ".$this -> sex;
- }
- function __sleep(){ //指定串行化时能提取的成员属性,没有参数,但是必须返回一个数组
- $arr = array("age","name");
- return $arr;
- }
- function __wakeup(){ //指定反串行化时,提取出来的值
- $this -> sex = "woman";
- }
- }
- <?
- require("./Person.class.php");
- $p = new Person(21,"du","man"); //定义Person类对象
- $pString = serialize($p); //对对象进行串行化
- file_put_contents("./file.txt",$pString);//存到文件里
- <?
- require("./Person.class.php");//反串行化时,也要包含原类
- $pString = file_get_contents("./file.txt");//从文件中取出串行化的值
- $p = unserialize($pString);//进行反串行化
- var_dump($p); //这个 $p就是之前那个串行化的对象,一样用,但是里面的值被我改了
来源: https://www.oschina.net/code/snippet_2607773_58749