Функции Язык программирования PHP

unserialize

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


Назад Оглавление Вперёд
strval Вверх unset

Возвращение сложных значений

Ваша функция может также возвращать сложные типы данных, такие как объект/object или массив/array.

Возвращение объекта:

  1. Вызвать object_init(return_value).

  2. Заполнить его значениями. Функции, предназначенные для этого, перечислены ниже.

  3. Возможно, зарегистрировать функции для этого объекта. Чтобы получать значения из объекта, функции понадобится получить "this" из active_symbol_table. Его тип должен быть IS_OBJECT, и это как правило таблица регулярного хэш (т.е. вы можете использовать функции регулярного хэша на .value.ht). Фактическая регистрация функции может быть выполнена с использованием :
    add_method( 
    return_value, function_name, function_ptr );