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方法關閉的資源),即再次初始化.
【示例】
【完整示例】