Функции за променливи
PHP Manual

unserialize

(PHP 4, PHP 5)

unserialize Създава PHP стойност от подходящо за съхранение представяне на стойност

Описание

mixed unserialize ( string $str )

Функция unserialize() взема дадена сериализирана променлива и превръща стойността й отново в PHP стойност.

Параметри

str

Сериализираният низ.

Ако променливата, която се десериализира е от тип обект, след успешно преобразуване на обекта, PHP автоматично ще направи опит да извика метода __wakeup() (ако съществува).

Забележка: директивата unserialize_callback_func
Възможно е да зададете обратно-извикваща функция, която да се извика, ако трябва да се създаде инстанция за недефиниран клас по време на десериализирането. (предпазва от връщане на непълен обект "__PHP_Incomplete_Class".) Използвайте php.ini, ini_set() или .htaccess, за да дефинирате 'unserialize_callback_func'. Всеки път, когато трябва да се създаде инстанция на недефиниран клас, тя ще бъде извикана. За да забраните тази възможност, просто установете тази настройка на празен низ.

Връщани стойности

Преобразуваната стойност се връща и може да бъде от тип boolean, integer, float, string, array или object.

В случай че подаденият низ не може да се десериализира, функцията връща FALSE и генерира E_NOTICE.

Дневник на промените

Версия Описание
4.2.0 Възможно е използването на директивата unserialize_callback_func.
4.0.0 При сериализиране на обект, методите вече не се губят. Моля прегледайте Сериализиране на обекти - обекти в сесии за повече информация.

Примери

Example #1 Пример за unserialize()

<?php
// В примера използваме unserialize(), за да заредим сесийни данни 
// в масива $session_data от низ, зареден от база от данни.
// Този пример допълва вече описания при serialize().

$conn odbc_connect("webdb""php""chicken");
$stmt odbc_prepare($conn"SELECT data FROM sessions WHERE id = ?");
$sqldata = array($_SERVER['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();
    }
}
?>

Example #2 Пример за 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, за да решите коя дефиниция на класа се изисква
}
?>

Бележки

Предупреждение

Ще бъде върната стойността FALSE, ако се появи грешка или ако десериализирате сериализираната стойност FALSE. Можете да прихванете този специален случай, сравнявайки параметъра str с serialize(false) или като прихванете генерираната E_NOTICE.

Вж. също


Функции за променливи
PHP Manual