PHP: unserialize object 之後得到 INCOMPLETE OBJECT?

使用 PHP 編寫網路程是很方便的,因為很多網路功能都已經內置。
其中一樣方便的東西就是 Session 。
利用 Session 可以網頁之間傳送資料而不用擔心給使用者察覺(因為都在伺服器那邊進行),甚至連一整個物件(Object)都可以傳過去。

不過由於物本身可以含有二進位(Binary)的資料,所以先要經過 serialize 的程序,然後再在目標頁面 unserialize 以取得物件。
但今天遇到一個問題,在接收頁面的物件 unserialize 之後,全部變成 INCOMPLETE OBJECT ,那根本不能使用。
原來,只是犯了一個很基本的錯誤:

// 傳送一方
session_start();
class obj{
function obj(){};
}
$object = new obj();
$_SESSION['object'] = serialize($object);

// 接收一方
session_start();
$object = unserialize($_SESSION['object']);

問題出在那?

其實很簡單....

session_start();
class obj{
function obj(){};
}

$object = unserialize($_SESSION['object']);

只要在還原物件前訂義物件就好了...
就這個小小的失誤,害我浪費了個多小時。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *