php的序列化&反序列化對與一些大文件的壓縮操作,讀寫操作十分有用。
一個簡單的序列化案例
同時用到了序列化與反序列化函數,二者在被調用時會分別自己調用對應的函數,__sleep 以及__wakeup.
<?php
/*
__sleep和__wakeup練習題:
故事:一個果農生產了很多水果種類,於是需要把一個買家指定的種類寄給他,生產的日期和寄給買家的日期
水果類(幾個成員,蘋果種類,雪梨種類,西瓜種類)
----------------------------
fruit.class.php(__sleep和__wakeup)
buy.php
pass.php
/////////三個文件都同時寫在index.php裏
*/
class Fruit{
private $apple;
private $banana;
private $xigua;
private $xuanli;
private $date;
function __construct($apple, $banana, $xigua, $xueli, $date ="1.26"){
$this->apple = $apple;
$this->banana = $banana;
$this->xigua = $xigua;
$this->xueli = $xueli;
$this->date = $date;
}
function getInfo(){
echo "信息如下:".$this->apple."&&&".$this->banana."&&&".$this->xigua."&&&".$this->xueli."<br />生產日期"."&&&".$this->date;
}
function __sleep(){
$info = array("apple","xueli","xigua","date");
return $info;
}
function __wakeup(){
$this->date = "2.20";
}
}
//1
//$fruit = new Fruit("蘋果","香蕉","西瓜","雪梨");
//$fruit->getInfo();
//2
echo "<br />擁有的水果:<br />";
$fruit = new Fruit("蘋果","香蕉","西瓜","雪梨");
$str = serialize($fruit);
$fruit->getInfo();
file_put_contents('fruit.txt',$str);
echo "<hr />";
$stri =file_get_contents('fruit.txt');
$shuiguo = unserialize($stri);
$shuiguo->getInfo();