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

php面向對象全攻略 (十六) 對象的串行化

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

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

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

php技術php面向對象全攻略 (十六) 對象的串行化,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 热久久伊大人香蕉网老师 | 尤物国产在线精品三区 | 国产伦精品一区二区三区免费 | 久久无码AV亚洲精品色午夜麻豆 | 精品夜夜澡人妻无码AV | 中文字幕不卡一区二区三区 | 国产精品麻豆高潮刺激A片 国产精品麻豆a在线播放 | 国产午夜亚洲精品不卡电影 | 三级黄色在线免费观看 | 2020国产成人免费视频 | 蜜柚视频网在线观看免费 | 国产午夜精品一区二区 | 亚洲中久无码永久在线 | 性直播免费| 大伊人青草狠狠久久 | 爽爽影院免费观看 | 最美白嫩的极品美女ASSPICS | 日韩在线视频www色 日韩在线看片中文字幕不卡 | 捏揉舔水插按摩师 | 果冻传媒我的女老板 | 国产成人精品综合在线观看 | 男人插曲女人的视频 | 婷婷精品国产亚洲AV在线观看 | 亚洲 欧美 国产在线视频 | 97精品在线| 久久精品国产亚洲AV热无遮挡 | 国精一区二区AV在线观看网站 | 国产国拍精品AV在线观看 | 国产睡熟迷奷系列网站 | 国产色婷亚洲99精品AV在线 | 99国内精品久久久久久久清纯 | 亚洲色偷偷偷网站色偷一区人人藻 | avtt一区| 久久综合亚洲色hezyo | 国产人A片777777久久 | 久久免费看少妇高潮A片2012 | 农村脱精光一级 | 老师的玉足高跟鞋满足我 | 国产精品人妻久久无码不卡 | 男人扒开添女人下部口述 | 草莓湿漉漉是好事还是恶性 |