串行化:序列化,将对象转成字符串
应用场合:
1.将对象在网络中传输
2.将对象持久保存
将一个对象串行化
$p = new Person("wp",10,"man");
$str = serialize($p);
file_put_contents("objstr", $str);
echo "保存成功";
将串行化后的字符串反串行化
//读出字符串从文件中
$str = file_get_contents("objstr.txt");
//返串行化
$p = unserialize($str);
串行化的魔法函数
__sleep
可以设置需要串行化的对象的属性,只要在这个方法中,返回一个数组,在数组中声明了那个属性名,那个属性就会被串行化,没有在这个数组中的就不被串行化,默认是全部串行化
echo "数组串行化自动调用 ";
return array("name","age");
__wakeup()
在反串行化时自动调用的方法,对串行化回来的对象,进行初始化,类似于__construct()和__clone()
function __wakeup(){
$this->name = 10;
}
json格式转化
$arr = array("name"=>"wp","age"=>10,"sex"=>“man”);
//串行化
$str = json_encoder($arr);
//反串行化,第二个参数true反串行化为数组,如果不加第二个参数,默认返回的是对象
$parr = json_decode($str,true);