欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解PHP對(duì)象的串行化與反串行化

 更新時(shí)間:2016年01月24日 10:08:30   作者:攜手一起走  
我們大家有知道PHP串行化可以把變量包括對(duì)象,轉(zhuǎn)化成連續(xù)bytes數(shù)據(jù),你可以將串行化后的變量存在一個(gè)文件里或在網(wǎng)絡(luò)上傳輸,然后再反串行化還原為原來的數(shù)據(jù)。文章給大家介紹PHP對(duì)象的串行化與反串行化,感興趣的朋友一起學(xué)習(xí)吧

什么時(shí)候使用串行化?

在網(wǎng)絡(luò)中傳輸對(duì)象的時(shí)候 向數(shù)據(jù)庫(kù)中保存文件的時(shí)候

今天我們要提到四個(gè)函數(shù)

全部串行化

1.serialize(對(duì)象名) 將指定的類對(duì)象串行化 $str=serialize($per) //將per對(duì)象串行化,結(jié)果返回給$str
2.unserialize(串行化后的返回值) 返回結(jié)果是對(duì)象 $per=unserialize($str);

局部串行化

3.__sleep() 串行化某對(duì)象的部分屬性。

4.__wakeup()反串行化時(shí),初始化(其實(shí)是修改)對(duì)象內(nèi)容

前兩個(gè)的使用方法我們大概已經(jīng)介紹過,接下來我們簡(jiǎn)單介紹一下__sleep()和__wakeup()使用方法

1.如果我們只想串行化一個(gè)對(duì)象中的部分屬性我們可以使用 __sleep()函數(shù)

在類定義中添加

function__sleep()//只序列化類中的name和age成員
{
$arr=new array('name','age'); name和age必須是類中的屬性 可以根據(jù)自己的實(shí)際需要增加
Return arr;
}

2.假如我們?cè)陬惔谢臅r(shí)候,per對(duì)象的name屬性值為“姜彤”在反序列化的時(shí)候我想改成"張三"怎么辦

function __wakeup()
{
This->name="張三";
}

詳細(xì)介紹對(duì)象PHP串行化

我們大家有知道PHP串行化可以把變量包括對(duì)象,轉(zhuǎn)化成連續(xù)bytes數(shù)據(jù),你可以將串行化后的變量存在一個(gè)文件里或在網(wǎng)絡(luò)上傳輸,然后再反串行化還原為原來的數(shù)據(jù)。文章這里就PHP串行化為大家詳細(xì)的介紹。你在反串行化類的對(duì)象之前定義的類,PHP可以成功地存儲(chǔ)其對(duì)象的屬性和方法. 有時(shí)你可能需要一個(gè)對(duì)象在反串行化后立即執(zhí)行。為了這樣的目的,PHP會(huì)自動(dòng)尋找__sleep和__wakeup方法。

當(dāng)一個(gè)對(duì)象被PHP串行化,PHP會(huì)調(diào)用__sleep方法(如果存在的話). 在反串行化一個(gè)對(duì)象后,PHP 會(huì)調(diào)用__wakeup方法. 這兩個(gè)方法都不接受參數(shù). __sleep方法必須返回一個(gè)數(shù)組,包含需要串行化的屬性. PHP會(huì)拋棄其它屬性的值。如果沒有__sleep方法,PHP將保存所有屬性。例子1顯示了如何用__sleep和__wakeup 方法來串行化一個(gè)對(duì)象. Id屬性是一個(gè)不打算保留在對(duì)象中的臨時(shí)屬性. __sleep方法保證在串行化的對(duì)象中不包含id屬性. 當(dāng)反串行化一個(gè)User對(duì)象,__wakeup方法建立id屬性的新值. 這個(gè)例子被設(shè)計(jì)成自我保持. 在實(shí)際開發(fā)中,你可能發(fā)現(xiàn)包含資源(如圖像或數(shù)據(jù)流)的對(duì)象需要這些方法。

Listing1 Object serialization

class User 
{ 
public $name; 
public $id; 
function __construct() 
{ 
//give user a unique ID 賦予一個(gè)不同的ID 
$this->id = uniqid(); 
} 
function __sleep() 
{ 
//do not serialize this->id 不串行化id 
return(array("name")); 
} 
function __wakeup() 
{ 
//give user a unique ID 
$this->id = uniqid(); 
} 
} 
//create object 建立一個(gè)對(duì)象 
$u = new User; 
$u->name = "Leon"; 
//serialize it 串行化 注意不串行化id屬性,id的值被拋棄 
$s = serialize($u); 
//unserialize it 反串行化 id被重新賦值 
$u2 = unserialize($s); 
//$u and $u2 have different IDs $u和$u2有不同的ID 
print_r($u); 
print_r($u2); 
?> 

關(guān)于PHP對(duì)象的串行化與反串行化的相關(guān)知識(shí)就給大家介紹到這里,希望對(duì)大家有所幫助。

相關(guān)文章

  • 詳解PHP處理字符串類似indexof的方法函數(shù)

    詳解PHP處理字符串類似indexof的方法函數(shù)

    這篇文章主要介紹了詳解PHP處理字符串類似indexof的方法函數(shù)的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • YII框架關(guān)聯(lián)查詢操作示例

    YII框架關(guān)聯(lián)查詢操作示例

    這篇文章主要介紹了YII框架關(guān)聯(lián)查詢操作,結(jié)合實(shí)例形式分析了Yii框架關(guān)聯(lián)查詢的實(shí)現(xiàn)方法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下
    2019-04-04
  • Yii2.0框架模型多表關(guān)聯(lián)查詢示例

    Yii2.0框架模型多表關(guān)聯(lián)查詢示例

    這篇文章主要介紹了Yii2.0框架模型多表關(guān)聯(lián)查詢,結(jié)合實(shí)例形式總結(jié)分析了Yii2.0框架多表關(guān)聯(lián)查詢相關(guān)操作技巧,需要的朋友可以參考下
    2019-07-07
  • 深入理解PHP內(nèi)核(一)

    深入理解PHP內(nèi)核(一)

    PHP作為一門簡(jiǎn)單而強(qiáng)大的語(yǔ)言,能夠提供很多Web適用的語(yǔ)言特性。從實(shí)踐出發(fā),繼弱類型變量原理探究后,本文帶領(lǐng)大家深入理解php內(nèi)核(一)
    2015-11-11
  • php實(shí)現(xiàn)單筆轉(zhuǎn)賬到支付寶功能

    php實(shí)現(xiàn)單筆轉(zhuǎn)賬到支付寶功能

    這篇文章主要為大家詳細(xì)介紹了php實(shí)現(xiàn)單筆轉(zhuǎn)賬到支付寶功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-10-10
  • laravel-admin 在列表頁(yè)添加自定義按鈕的例子

    laravel-admin 在列表頁(yè)添加自定義按鈕的例子

    今天小編就為大家分享一篇laravel-admin 在列表頁(yè)添加自定義按鈕的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-09-09
  • thinkPHP查詢方式小結(jié)

    thinkPHP查詢方式小結(jié)

    這篇文章主要介紹了thinkPHP查詢方式,結(jié)合實(shí)例形式總結(jié)分析了thinkPHP的普通查詢、表達(dá)式查詢、區(qū)間查詢、統(tǒng)計(jì)查詢及SQL直接查詢的使用技巧,需要的朋友可以參考下
    2016-01-01
  • php 中文字符串首字母的獲取函數(shù)分享

    php 中文字符串首字母的獲取函數(shù)分享

    這篇文章介紹了php 中文字符串首字母的獲取函數(shù),有需要的朋友可以參考一下
    2013-11-11
  • ThinkPHP模版中導(dǎo)入CSS和JS文件的方法

    ThinkPHP模版中導(dǎo)入CSS和JS文件的方法

    這篇文章主要介紹了ThinkPHP模版中導(dǎo)入CSS和JS文件的方法,分析了使用import標(biāo)簽與load標(biāo)簽實(shí)現(xiàn)css和js文件導(dǎo)入的技巧,需要的朋友可以參考下
    2014-11-11
  • PHP如何通過AJAX方式實(shí)現(xiàn)登錄功能

    PHP如何通過AJAX方式實(shí)現(xiàn)登錄功能

    PHP是一門很好的語(yǔ)言,可以很方便的開發(fā)web應(yīng)用程序,下面介紹一下Ajax+PHP+MySQL登陸示例,感興趣的小伙伴們可以參考一下
    2015-11-11

最新評(píng)論