Новости | Документация | Download | Webboard | FAQ | Поиск | Контакты


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 При сериализации объекта методы больше не теряются. См. Serializing Objects для более подробной информации.

Примеры

Пример #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();
    }
}
?>

Пример #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.

Смотрите также

  • serialize() - Генерирует пригодное для хранения представление переменной






  Copyright Apache.ru © 1999-2017, All Rights Reserved Разработка сайта: Inside.ru  
  РЕКЛАМА НА САЙТЕ: |