這篇文章介紹的內容是關于【php類與對象】對象序列化 ,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下
對象序列化
序列化對象 - 在會話中存放對象
serialize()能序列化所有php里面的值來返回一個包含字節流的字符串來表示。
unserialize()函數能夠重新把字符串變回php原來的值。
序列化一個對象將會保存對象的所有變量,但是不會保存對象的方法,只會保存類的名字。
unserialize()對象,該對象的類必須已定義。
如果序列化類A的一個對象,將會返回一個跟類A相關,而且包含了對象所有變量值的字符串。
如果要想在另外一個文件中解序列化一個對象,這個對象的類必須在解序列化之前定義,可以通過包含一個定義該類的文件或使用函數spl_autoload_register()來實現。
<?php// html' target='_blank'>classa.inc: class A { public $one = 1; public function show_one() { echo $this->one; } }// page1.php: include("classa.inc"); $a = new A; $s = serialize($a); // 把變量$s保存起來以便文件page2.php能夠讀到 file_put_contents('store', $s);// page2.php: // 要正確了解序列化,必須包含下面一個文件 include("classa.inc"); $s = file_get_contents('store'); $a = unserialize($s); // 現在可以使用對象$a里面的函數 show_one() $a->show_one();?>
使用函數session_register()來保存對象到會話中,在每個頁面結束的時候這些對象都會自動序列化,而在每個頁面開始的時候又自動解序列化。 所以一旦對象被保存在會話中,整個應用程序的頁面都能使用這些對象。
可以在對象上使用 __sleep() 和 __wakeup() 方法處理序列化/反序列化事件。
session_register() PHP 5.3.0 廢棄 , PHP 5.4.0 移除。
對象序列化
序列化對象 - 在會話中存放對象
serialize()能序列化所有php里面的值來返回一個包含字節流的字符串來表示。
unserialize()函數能夠重新把字符串變回php原來的值。
序列化一個對象將會保存對象的所有變量,但是不會保存對象的方法,只會保存類的名字。
unserialize()對象,該對象的類必須已定義。
如果序列化類A的一個對象,將會返回一個跟類A相關,而且包含了對象所有變量值的字符串。
如果要想在另外一個文件中解序列化一個對象,這個對象的類必須在解序列化之前定義,可以通過包含一個定義該類的文件或使用函數spl_autoload_register()來實現。
<?php// classa.inc: class A { public $one = 1; public function show_one() { echo $this->one; } }// page1.php: include("classa.inc"); $a = new A; $s = serialize($a); // 把變量$s保存起來以便文件page2.php能夠讀到 file_put_contents('store', $s);// page2.php: // 要正確了解序列化,必須包含下面一個文件 include("classa.inc"); $s = file_get_contents('store'); $a = unserialize($s); // 現在可以使用對象$a里面的函數 show_one() $a->show_one();?>
使用函數session_register()來保存對象到會話中,在每個頁面結束的時候這些對象都會自動序列化,而在每個頁面開始的時候又自動解序列化。 所以一旦對象被保存在會話中,整個應用程序的頁面都能使用這些對象。
可以在對象上使用 __sleep() 和 __wakeup() 方法處理序列化/反序列化事件。
session_register() PHP 5.3.0 廢棄 , PHP 5.4.0 移除。
相關推薦:
【php類與對象】對象和引用
【php類與對象】trait
【php類與對象】Final 關鍵字
以上就是【php類與對象】對象序列化 的詳細內容,更多請關注 其它相關文章!
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。
新聞熱點
疑難解答