一 使用系统函数serialize和unserilazie
<?php class A { public $a = "aa"; public $b = 10; function __toString() { return $this->a."{$this->b}"; } } $a = new A(); echo $a; //序列化 $str = serialize($a); file_put_contents("A.txt",$str); //反序列化 $str = file_get_contents("A.txt"); $b = unserialize($str); echo $b;
当只想要序列化对象的部分属性时,使用__sleep()函数,该函数需要返回一个数组,数组内存放的是需要序列化的属性
function __sleep() { return array("a"); }
当反序列化时候,会自动调用 __wakeup()函数,和构造方法的作用是差不多的
function __wakeup() { $this->a = "waa"; }
二 数组的序列化成json
序列化使用json_encode 反序列化使用json_decode
<?php $arr = array("name"=>"zhangsan","age"=>12,"sex"=>"男"); $str = json_encode($arr); echo $str; $ret = json_decode($str,true); print_r($ret);
反序列化的时候,json_decode第二个参数默认false,返回一个对象,当为true时候,返回的是一个数组