所謂序列化,就是將一個變數的資料轉換為字串(但是與型別轉換不同)。其目的是將該字串儲存起來(存為文字檔案),當在其他環境上運行時,可以透過反序列化,將其回應。 (一般用在資料需要儲存的地方)
序列化:
$str=serialize($變數)//將資料轉換為字串,並存入變數$ str。
file_put_conetents("文字檔案路徑",$str);//將檔案存在文字檔案中。
反序列化:
$str=file_get_contents("文字檔案路徑");//取得檔案中儲存的序列化的資訊。
$value=unserialize($str);//將取出的字串內容轉換為正常的資料存入$value 中。
序列化與反序列化時的魔術方法:
__sleep():在對某個類別的物件進行序列化的時候,會自動呼叫該類別中的__sleep()方法;
使用此方式以對需求進行序列化的資料進行選取,並存入與陣列中所需的屬性,此陣列將傳回數組的值就是要序列化的東西。
__wakeup():與__sleep()正好相反,在反序列化的時候調用,可以進行一些有用的操作,以使得狀態回到序列化之前的狀態(如數據庫連接)。因為序列化只是將需要的屬性變成字串儲存起來,反序列化也只是將字串變回數據,但是一些狀態並沒有返回到之前的狀態,此時就可以透過__wakeup()來進行操作,回到與之前完全相同的狀態。
相關推薦:
詳解PHP序列化反序列化的方法,詳解php序列化反_PHP教學
#以上是PHP序列化與反序列化詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!