天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

php面向?qū)ο笕ヂ?(十六) 對(duì)象的串行化

把對(duì)象串行化
有時(shí)候需要把一個(gè)對(duì)象在網(wǎng)絡(luò)上傳輸,為了方便傳輸,可以把整個(gè)對(duì)象轉(zhuǎn)化為二進(jìn)制串,
等到達(dá)另一端時(shí),再還原為原來(lái)的對(duì)象,這個(gè)過(guò)程稱之為串行化,就像我們現(xiàn)在想把一輛汽
車通過(guò)輪船運(yùn)到美國(guó)去,因?yàn)槠嚨捏w積比較大,我們可以把汽車拆開(kāi)成小的部件,然后我們把這些部件通過(guò)輪般運(yùn)到美國(guó)去,到了美國(guó)再把這些部件組裝回汽車。
有兩種情況我們必須把對(duì)象串行化,第一種情況就是把一個(gè)對(duì)象在網(wǎng)絡(luò)中傳輸?shù)臅r(shí)候要
將對(duì)象串行化,第二種情況就是把對(duì)象寫入文件或是數(shù)據(jù)庫(kù)的時(shí)候用到串行化。
串行化有兩個(gè)過(guò)程,一個(gè)是串行化,就是把對(duì)象轉(zhuǎn)化為二進(jìn)制的字符串,我們使用
serialize()函數(shù)來(lái)串行化一個(gè)對(duì)象,另一個(gè)是反串行化,就是把對(duì)象轉(zhuǎn)化的二進(jìn)制字符串再轉(zhuǎn)
化為對(duì)象, 我們使用unserialize()函數(shù)來(lái)反串行化一個(gè)對(duì)象。
php 中serialize()函數(shù)的參數(shù)為對(duì)象名,返回值為一個(gè)字符串,Serialize()返回的字符串
含義模糊,一般我們不會(huì)解析這個(gè)串來(lái)得到對(duì)象的信息,我們只要把返回來(lái)的這個(gè)字符串傳
網(wǎng)絡(luò)另一端或是保存到方件中即可。
php 中unserialize()函數(shù)來(lái)反串行化對(duì)象,這個(gè)函數(shù)的參數(shù)即為serialize()函數(shù)的返回值,
輸出當(dāng)然是重新組織好的對(duì)象。代碼片段
復(fù)制代碼 代碼如下:
<?
class Person{
//下面是人的成員屬性
var $name; //人的名子
var $sex; //人的性別
var $age; //人的年齡
//定義一個(gè)構(gòu)造方法參數(shù)為屬性姓名$name、性別$sex和年齡$age進(jìn)行賦值
function __construct($name="", $sex="", $age=""){
$this->name=$name;
$this->sex=$sex;
$this->age=$age;
}
//這個(gè)人可以說(shuō)話的方法, 說(shuō)出自己的屬性
function say() {
echo "我的名子叫:".$this->name." 性別:".$this->sex." 我的年齡是:".$this->age."<br>";
}
}
$p1=new Person("張三", "男", 20);
$p1_string=serialize($p1); //把一個(gè)對(duì)象串行化,返一個(gè)字符串
echo $p1_string."<br>"; //串行化的字符串我們通常不去解析
$p2=unserialize($p1_string); //把一個(gè)串行化的字符串反串行化形成對(duì)象$p2
$p2->say();
?>

上例輸出結(jié)果:
代碼片段
O:6:"Person":3:{s:4:"name";s:4:"張三";s:3:"sex";s:2:"男";s:3:"age";i:20;}
我的名子叫:張三性別:男我的年齡是:20
php5 中有兩個(gè)魔術(shù)方法__sleep()方法和__wakeup()方法,在對(duì)象串行化的時(shí)候,會(huì)調(diào)用
一個(gè)__sleep()方法來(lái)完成一些睡前的事情;而在重新醒來(lái),即由二進(jìn)制串重新組成一個(gè)對(duì)象
的時(shí)候,則會(huì)自動(dòng)調(diào)用php 的另一個(gè)函數(shù)__wakeup(),做一些對(duì)象醒來(lái)就要做的動(dòng)作。
__sleep()函數(shù)不接受任何參數(shù),但返回一個(gè)數(shù)組,其中包含需要串行化的屬性。末被包
含的屬性將在串行化時(shí)被忽略,如果沒(méi)有__sleep()方法,php 將保存所有屬性。
代碼片段
復(fù)制代碼 代碼如下:
<?
class Person{
//下面是人的成員屬性
var $name; //人的名子
var $sex; //人的性別
var $age; //人的年齡
//定義一個(gè)構(gòu)造方法參數(shù)為屬性姓名$name、性別$sex和年齡$age進(jìn)行賦值
function __construct($name="", $sex="", $age=""){
$this->name=$name;
$this->sex=$sex;
$this->age=$age;
}
//這個(gè)人可以說(shuō)話的方法, 說(shuō)出自己的屬性function say()
{
echo "我的名子叫:".$this->name." 性別:".$this->sex." 我的年齡是:".$this->age."<br>";
}
//指定串行化時(shí)把返回的數(shù)組中$name和$age值串行化,忽略沒(méi)在數(shù)組中的屬性$sex
function __sleep() {
$arr=array("name", "age");
return($arr);
}
//重新生成對(duì)象時(shí),并重新賦值$age為40
function __wakeup() {
$this->age = 40;
}
}
$p1=new Person("張三", "男", 20);
//把一個(gè)對(duì)象串行化,返一個(gè)字符串,調(diào)用了__sleep()方法,忽略沒(méi)在數(shù)組中的屬性$sex
$p1_string=serialize($p1);
echo $p1_string."<br>"; //串行化的字符串我們通常不去解析
$p2=unserialize($p1_string); //反串行化形成對(duì)象$p2重新賦值$age為40
$p2->say();
?>

上例輸出值為:
執(zhí)行結(jié)果
O:6:"Person":2:{s:4:"name";s:4:"張三";s:3:"age";i:20;}
我的名子叫:張三性別:我的年齡是:40

php技術(shù)php面向?qū)ο笕ヂ?(十六) 對(duì)象的串行化,轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 小柔的性放荡羞辱日记动漫 | 午夜福利小视频400 午夜福利网国产A | 果冻传媒在线观看网站 | 越南女子杂交内射BBWXZ | 征服艳妇后宫春色 | 久久秋霞理伦片 | 青青青青久久久久国产的 | 伊人久久精品99热超碰 | 亚洲深夜在线 | 99久久99久久精品 | 日韩亚洲国产中文字幕欧美 | 无码一卡二卡三卡四卡 | 国产成人啪精视频精东传媒网站 | 爱人 qvod| 日本免费一区二区三区最新vr | 奇米色偷偷 | 老色69久久九九精品高潮 | 欧美男男网站免费观看videos | 亚洲欧美日韩综合影院 | 扒开双腿疯进出爽爽爽动态图 | 午夜福利08550 | 99re热精品视频国产免费 | 偷柏自拍亚洲综合在线 | 无人区日本电影在线观看高清 | 97国内精品久久久久久久影视 | 午夜福利免费体检区 | 99在线免费 | 一本大道无码AV天堂欧美 | 麻豆久久婷婷五月国产 | caoporn 免费视频 | 97国产精品人妻无码免费 | 97碰成视频免费 | 美女久久久 | 老师你狠狂 | 俄罗斯videosbest8 | 一品道门免费视频韩国 | 国产a视频视卡在线 | 久久机热视频 这里只有精品首页 | 久久99re6国产在线播放 | 亚洲国产在线视频精品 | 国产互换后人妻的疯狂VIDEO |