天天看點

PHP面向對象04_串行化

oop04複習

2014-9-3 10:48:45

1、克隆對象以及__clone()方法

概述:對象屬于引用類型,普通的"="号屬于引用指派

有時可能需要根據一個對象完全克隆出一個一模一樣的對象,而且克隆以後,兩個對象互不幹擾。

格式:

   但是,當要克隆的對象中有子對象或資源時,克隆會不完整

魔術方法:__clone()

當執行clone克隆時會自動調用的方法,主要用于解決對象中特殊屬性的複制操作。

2、__tostring( )

概述:當試圖直接echo對象時,會報錯。我們可以在類中加上這個方法,會在echo時自動調用

示例:

3、 __call( )

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

第一個參數name表示方法名第二參數arguments表示調用時的參數清單(數組類型)

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

該方法位于類之外.

當new一個新對象時,程式會試圖調用該方法自動包含所需要的檔案

5、對象串行化

對象也是一種在記憶體中存儲的資料類型,他的壽命通常随着生成該對象的程式終止而終止.

有時候可能需要将對象的狀态儲存下來,需要時再将對象恢複.

**串行化(serialize):對象通過寫出描述自己狀态的數值來記錄自己,這個過程稱對象的串行化

串行化傳回一個包含位元組流的字元串.

以下兩種情況需要将對象串行化:

01)對象需要在網絡中傳輸時,将對象串行化成二進制串即可.

02)對象需要持久儲存時,将對象串行化後寫入檔案或資料庫.

**反串行化(unserialize):能夠重新把字元串變回php原來的對象值

note:串行化一個對象将會儲存對象的所有屬性變量和類名資訊,但是不會儲存對象的方法.

是以,反串行化時需導入原先對象的方法.

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

[**]對象串行化中的魔術方法__sleep( )和 __wakeup( )

__sleep(): 是執行串行化時自動調用的方法,目的是實作資源類型屬性的關閉釋放等操作

note:sleep方法需要傳回一個數組,其中數組中的值是串行化時要保留的屬性名

__wakeup():是在執行反串行化時自動調用的方法,目的是實作資源屬性的打開(sleep方法關閉的資源),即再次初始化.

【示例】

【完整示例】