|
(PHP 3>= 3.0.5, PHP 4)
unserialize - создаёт PHP-значение из хранимого представления.
Описание
mixed unserialize (string str)
unserialize() принимает одну сериализованную переменную (см.
serialize()
) и конвертирует её обратно в РНР-значение. Возвращается конвертированное
значение, которое может быть
integer
,
float
,
string
,
array
или
object
.
Примечание: можно установить callback-функцийю, которая будет вызываться,
если неопределённый/undefined класс должен быть инстанциирован в процессе десериализации
(для предотвращения получения неполного
object
"__PHP_Incomplete_Class"). Используйте ваш
php.ini,
ini_set()
или .htaccess-файл для определения 'unserialize_callback_func'.
Каждый раз, когда undefined класс должен быть инстанциирован, вызывается эта установка.
Для отключения этого просто сделайте эту установку пустой.
Пример 1. unserialize_callback_func
$serialized_object='O:1:"a":1:{s:5:"value";s:3:"100";}';
ini_set('unserialize_callback_func','mycallback'); // установить вашу callback_function
function mycallback($classname) {
// просто включите/include файл, содержащий ваше classdefinition
// вы получите $classname для показа того, какое classdefinition необходимо
}
|
|
Примечание:
в PHP 3 методы не сохраняются при десериализации сериализованного объекта.
В PHP 4 это ограничение устранено, и восстанавливаются как свойства, так и
методы. См. дополнительно раздел
Сериализация объектов в главе Классы и объекты.
Пример 2. unserialize()
// Здесь мы используем 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()
.
|
|