serialize()返回乙個字串,包含著可以儲存於 php 的任何值的位元組流表示。
unserialize()可以用此字串來重建原始的變數值。用序列化來儲存物件可以儲存物件中的所有變數。物件中的函式不會被儲存,只有類的名稱。
要能夠unserialize()乙個物件,需要定義該物件的類。也就是,如果序列化了 page1.php 中類 a 的物件 $a,將得到乙個指向類 a 的字串幷包含有所有 $a 中變數的值。如果要在 page2.php 中將其解序列化,重建類 a 的物件 $a,則 page2.php 中必須要出現類 a 的定義。這可以例如這樣實現,將類 a 的定義放在乙個包含檔案中,並在 page1.php 和 page2.php 都包含此檔案。
serialize()檢查類中是否有魔術名稱 __sleep 的函式。如果這樣,該函式將在任何序列化之前執行。它可以清除物件並應該返回乙個包含有該物件中應被序列化的所有變數名的陣列。
使用 __sleep 的目的是關閉物件可能具有的任何資料庫連線,提交等待中的資料或進行類似的清除任務。此外,如果有非常大的物件而並不需要完全儲存下來時此函式也很有用。
相反地,unserialize()檢查具有魔術名稱 __wakeup 的函式的存在。如果存在,此函式可以重建物件可能具有的任何資源。
使用 __wakeup 的目的是重建在序列化中可能丟失的任何資料庫連線以及處理其它重新初始化的任務。
序列化(序列化)
原書上翻譯為序列化,msdn翻譯為序列化 作用 當需要儲存,或者網路傳輸 remoting時,資料 物件或值 需要序列化 類似於打包傳輸檔案。system.serializableattribute 序列化是指儲存和獲取磁碟檔案 記憶體或其他地方中的物件。在序列化時,所有的例項資料都儲存到儲存介質上...
序列化(模型序列化 序列化巢狀)
from rest framework import serializers from meituan.models import merchant,class merchantserializer serializers.modelserializer class meta model merch...
序列化反序列化
只要用到網路開發啊,就一定會用到序列化反序列化。1,自定義結構體 struct test int len int type char data 10 test data test buffer.缺點 明文,只支援基本型別,不支援變長結構 2,在1的基礎上,自定義乙個緩衝類,存放乙個訊息。把訊息寫入緩...