魔術函數 __sleep__wakeup

serialize() 檢查類中是否有魔術名稱 __sleep 的函數。若果這樣,該函數將在任何序列化之前運行。它可以清除對象並應該返回一個包括有該物件中應被序列化的所有變量名的陣列。

使用 __sleep 的目的是關閉對象可能具有的任何資料庫連線,送出等待中的資料或進行類似的清除任務。此外,若果有非常大的對象而並不需要完全儲存下來時此函數也很有用。

相反地,unserialize() 檢查具有魔術名稱 __wakeup 的函數的存在。若果存在,此函數可以重建對象可能具有的任何資源。

使用 __wakeup 的目的是重建在序列化中可能丟失的任何資料庫連線以及處理其它重新起始化的任務。