PHP物件導向04 序列化

2021-09-06 18:07:45 字數 2222 閱讀 7153

oop04複習

2014-9-3 10:48:45

要點:

--1、轉殖物件

--2、__tostring( )

--3、 __call( )

--4、自動載入類

--5、物件序列化

1、轉殖物件以及__clone()方法

概述:物件屬於引用型別,普通的"="號屬於引用賦值

有時可能需要根據乙個物件完全轉殖出乙個一模一樣的物件,而且轉殖以後,兩個物件互不干擾。

格式:

$obj = new

class

();$obj2 = clone

$obj;

但是,當要轉殖的物件中有子物件或資源時,轉殖會不完整

魔術方法:__clone()

當執行clone轉殖時會自動呼叫的方法,主要用於解決物件中特殊屬性的複製操作。

2、__tostring( )

概述:當試圖直接echo物件時,會報錯。我們可以在類中加上這個方法,會在echo時自動呼叫

示例:

public

function

__tostring()

3、 __call( )

概述:當試圖訪問物件中不存在的方法時,會報錯。我們可以在類中加上這個方法來處理這種情況

格式:

mixed __call( string

$name , array

$arguments )

第乙個引數$name表示方法名

第二引數$arguments表示呼叫時的引數列表(陣列型別)

示例:

public

function __call($name,$args

)不存在!引數列表:";

var_dump($args

);}

4、自動載入類(__autoload())

該方法位於類之外.

當new乙個新物件時,程式會試圖呼叫該方法自動包含所需要的檔案

示例:

function __autoload($classname

)else

}

5、物件序列化

**反序列化(unserialize):能夠重新把字串變回php原來的物件值

note:序列化乙個物件將會儲存物件的所有屬性變數和類名資訊,但是不會儲存物件的方法.

所以,反序列化時需匯入原先物件的方法.

***** ***** *****

[**]物件序列化中的魔術方法__sleep( )和 __wakeup( )

__sleep(): 是執行序列化時自動呼叫的方法,目的是實現資源型別屬性的關閉釋放等操作

note:sleep方法需要返回乙個陣列,其中陣列中的值是序列化時要保留的屬性名

__wakeup():是在執行反序列化時自動呼叫的方法,目的是實現資源屬性的開啟(sleep方法關閉的資源),即再次初始化.

【示例】

public

function

__sleep()

【完整示例】

<?php

//宣告乙個person類,包含三個成員屬性和乙個成員方法

class

person

}$person = new person(); //

能過person類建立乙個物件,物件的引用名為$person

$person_string = serialize($person); //

通過serialize函式將物件序列化,返回乙個字串

file_put_contents("file.txt", $person_string); //

將物件序列化後的字串儲存到file.txt檔案中

//將file.txt檔案中的字串讀出來並賦給變數$person_string

$person_string = file_get_contents("file.txt");

$person = unserialize($person_string); //

進行反序列化操作,形成物件$person。

$person -> say(); //

呼叫物件中的say()方法,用來測試反序列化物件是否成功

PHP物件導向04 序列化

oop04複習 2014 9 3 10 48 45 要點 1 轉殖物件 2 tostring 3 call 4 自動載入類 5 物件序列化 1 轉殖物件以及 clone 方法 概述 物件屬於引用型別,普通的 號屬於引用賦值 有時可能需要根據乙個物件完全轉殖出乙個一模一樣的物件,而且轉殖以後,兩個物件...

PHP物件導向4 序列化

序列化 serialization 將物件的狀態資訊轉換為可以儲存或傳輸的形式的過程。警告 各種語言所採用的序列化機制往往不一樣,不相容。string serialize mixed value serialize 返回字串,此字串包含了表示 value 的位元組流,同時不丟失其型別和結構。seri...

php物件導向 OOP 把物件序列化

有時候需要把乙個物件在網路上傳輸,為了方便傳輸,可以把整個物件轉化為二進位制串,等到達另一端時,再還原為原來的物件,這個過程稱之為序列化,就像我們現在想把一輛汽車通過輪船運到美國去,因為汽車的體積比較大,我們可以把汽車拆開成小的部件,然後我們把這些部件通過輪般運到美國去,到了美國再把這些部件組裝回汽...