 |
(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().
|
 |