PHP 8.4.0 RC4 available for testing

igbinary_serialize

(PECL igbinary >= 1.1.1)

igbinary_serializeСоздаёт компактное, сохраняемое двоичное представление значения

Описание

igbinary_serialize(mixed $value): string|false

Создаёт сохраняемое представление значения.

Полезно для хранения или передачи значений PHP без потери их типа и структуры.

Чтобы снова превратить сериализованную строку в значение PHP, можно использовать igbinary_unserialize().

Список параметров

value

Значение, которое необходимо сериализовать. igbinary_serialize() обрабатывает все типы, кроме ресурсов (resource) и некоторых объектов (object) (смотрите примечание ниже). Даже массивы (array), содержащие ссылки на себя, могут быть сериализованы функцией igbinary_serialize(). Циклические ссылки внутри сериализующихся массивов (array) или объектов (object) также будут сохранены. Любая другая ссылка будет потеряна.

При сериализации объектов, igbinary будет пытаться вызвать функции __serialize() или __sleep() перед сериализацией. Это позволит объекту выполнить любую очистку в последнюю минуту и т.д. перед сериализацией. Аналогичным образом, когда объект восстанавливается с помощью igbinary_unserialize(), вызывается функция __unserialize() или __wakeup().

Замечание:

Начало имён закрытых членов объекта (object) дополняются именем класса, а начало имён защищённых членов символом '*'. Эти дополненные значения окружаются нулевым байтом с обеих сторон.

Возвращаемые значения

Возвращает строку, содержащую представление потока байтов value, которое может быть сохранено где угодно.

Обратите внимание, что это двоичная строка, которая может включать в себя любое байтовое значение и должна храниться и обрабатываться как таковая. Например, вывод функции igbinary_serialize() обычно должен храниться в поле базы данных BLOB, а не в поле CHAR или TEXT.

Примеры

Пример #1 Пример использования igbinary_serialize()

<?php
$ser
= igbinary_serialize(['test', 'test']);
echo
urlencode($ser), "\n";
var_export(igbinary_unserialize($ser));
?>

Результат выполнения приведённого примера:

%00%00%00%02%14%02%06%00%11%04test%06%01%0E%00
array (
  0 => 'test',
  1 => 'test',
)

Примечания

Замечание:

Обратите внимание, что многие встроенные объекты PHP не могут быть сериализованы. Однако те, у кого есть такая возможность, реализуют либо интерфейс Serializable, либо магические методы __serialize()/__unserialize() или __sleep()/__wakeup(). Если внутренний класс не соответствует ни одному из этих требований, он не может быть надёжно сериализован с помощью какого-либо сериализатора.

Есть несколько исторических исключений из приведённого выше правила, когда некоторые внутренние объекты могут быть сериализованы без реализации интерфейса или раскрытия методов.

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

Добавить

Примечания пользователей

Пользователи ещё не добавляли примечания для страницы
To Top