php中物件的序列化

2022-05-13 02:04:32 字數 1870 閱讀 2122

我們大家有知道php序列化可以把變數包括物件,轉化成連續bytes資料,你可以將序列化後的變數存在乙個檔案裡或在網路上傳輸,然後再反序列化還原為原來的資料。文章這裡就php序列化為大家詳細的介紹。你在反序列化類的物件之前定義的類,php可以成功地儲存其物件的屬性和方法. 有時你可能需要乙個物件在反序列化後立即執行。為了這樣的目的,php會自動尋找__sleep和__wakeup方法。

當乙個物件被php序列化,php會呼叫__sleep方法(如果存在的話). 在反序列化乙個物件後,php 會呼叫__wakeup方法. 這兩個方法都不接受引數. __sleep方法必須返回乙個陣列,包含需要序列化的屬性. php會拋棄其它屬性的值。如果沒有__sleep方法,php將儲存所有屬性。

<?php

/**

* @authors peng--jun

* @email [email protected]

* @date 2016-01-23 14:40:38

* @link

* @version $id$

****************************************== */

header(

"content-type: text/html; charset=utf-8

");

class

person

function say()

//在類中新增此方法,在序列化的時候自動呼叫並返回陣列

function __sleep()

//在反序列化物件時自動呼叫該方法,沒有引數也沒有返回值

function __wakeup()

} $person1 = new person("

張三",20,"男"

); $person1_string =serialize($person1);

echo $person1_string.""

;//反序列化物件,並自動呼叫了__wakeup()方法重新為獨享中的age賦值。

$person2 =unserialize($person1_string);

$person2->say();

?>

輸出的結果為:

o:6:"

person

":2:

我的名字:張三性別為: 年齡為:

40

2.將序列化的字串儲存到檔案中,從檔案中讀取字串,反串性化例項。

header("

content-type: text/html; charset=utf-8

");

class

person

function say()

} $person1 = new person("

張三",21,"男"

); $person1_string =serialize($person1);

file_put_contents(

"file.txt

", $person1_string);

header("

content-type: text/html; charset=utf-8

");

class

person

function say()

} $person2_string = file_get_contents("

file.txt");

$person2 =unserialize($person2_string);//反串性化重新形成物件$person2.

$person2->say();

?>

php 序列化物件

習慣性借用手冊裡面的介紹 所有php裡面的值都可以使用函式serialize 來返回乙個包含位元組流的字串來表示。unserialize 函式能夠重新把字串變回php原來的值。序列化乙個物件將會儲存物件的所有變數,但是不會儲存物件的方法,只會儲存類的名字。唔,不懂沒事,我們直接看 注釋有解釋 首先宣...

PHP物件序列化和反序列化

序列化 final class db 填寫需要序列化的屬性,不寫此方法的話,序列化全部屬性 public function sleep private function connectdb arr db host localhost db user root db pass root obj new...

PHP序列化 序列化

將物件序列號 當需要將物件長久儲存時或用於網路傳輸等.將物件序列號成字串儲存 class demo 魔術方式,當物件序列號時自動呼叫,此時會序列號陣列中的屬性.如果沒有該方法,則序列號所有屬性 function sleep 當物件返序列化時自動呼叫,此時會初始化返序列化後物件中該方法中的屬性 fun...