(PHP 3 >= 3.0.5, PHP 4, PHP 5)
unserialize --
從已存儲的表示中建立 PHP 的值
描述
mixed
unserialize ( string str [, string callback] )
unserialize() 對單一的已序列化的變量進行動作,將其轉換回
PHP 的值。返回的是轉換之後的值,可為
integer、float、string、array
或 object。若果傳遞的字串不可解序列化,則返回 FALSE。
unserialize_callback_func 指令:
若果在解序列化的時候需要案例化一個未定義類,則可以設定回呼函數以供呼叫(以免得到的是不完整的
object 「__PHP_Incomplete_Class」)。可通過
php.ini、ini_set() 或 .htaccess
定義『unserialize_callback_func』。每次案例化一個未定義類時它都會被呼叫。若要禁止這個特性,只需置空此設定。還需要注意的是
unserialize_callback_func 指令是從 PHP 4.2.0 開始提供使用的。
注:
callback 參數是在 PHP 4.2.0 中增加的
若被解序列化的變量是一個對象,在成功地重新構造物件之後,PHP
會自動地試圖去呼叫 __wakeup()
成員函數(若果存在的話)。
例子 1. unserialize_callback_func 示例
<?php $serialized_object='O:1:"a":1:{s:5:"value";s:3:"100";}';
// unserialize_callback_func 從 PHP 4.2.0 起可用 ini_set('unserialize_callback_func','mycallback'); // 設定您的回呼函數
function mycallback($classname) { // 只需包括含有類定義的檔案 // $classname 指出需要的是哪一個類 } ?>
|
|
注:
在 PHP 3 中,解序列化一個物件時是不儲存方法的。而
PHP 4 打破了這個限制,同時儲存了屬性和方法。請參見類與物件中的序列化物件部分取得更多訊息。
例子 2. unserialize() 示例
<?php // 這裡,我們使用 unserialize() 載入來自資料庫的 $session_data 陣列中的會話資料。 // 此例是描述 serialize() 的那個例子的補充。
$conn = odbc_connect ("webdb", "php", "chicken"); $stmt = odbc_prepare ($conn, "SELECT data FROM sessions WHERE id = ?"); $sqldata = array ($PHP_AUTH_USER); if (!odbc_execute ($stmt, &$sqldata) || !odbc_fetch_into ($stmt, &$tmp)) { // 若果執行出錯或返回錯誤,則起始化為空陣列 $session_data = array(); } else { // 現在我們需要的是 $tmp[0] 中已序列化的資料。 $session_data = unserialize ($tmp[0]); if (!is_array ($session_data)) { // 出錯,起始化為空陣列 $session_data = array(); } } ?>
|
|
參見 serialize()。