魔術函式 __sleep 和 __wakeup
serialize() 檢查類中是否有魔術名稱 __sleep 的函式。如果這樣,該函式將在任何序列化之前運行。它可以清除對象並應該返回一個包含有該對象中應被序列化的所有變數名的數組。
使用 __sleep 的目的是關閉對象可能具有的任何資料庫連線,提交等待中的數據或進行類似的清除任務。此外,如果有非常大的對象而並不需要完全儲存下來時此函式也很有用。
相反地, unserialize() 檢查具有魔術名稱 __wakeup 的函式的存在。如果存在,此函式可以重建對象可能具有的任何資源。
使用 __wakeup 的目的是重建在序列化中可能丟失的任何資料庫連線以及處理其它重新初始化的任務。