igbinary_serializeСоздаёт компактное, сохраняемое двоичное представление значения
&reftitle.description;
stringfalseigbinary_serializemixedvalue
Создаёт сохраняемое представление значения.
Полезно для хранения или передачи значений PHP без потери их типа и структуры.
Чтобы снова превратить сериализованную строку в значение PHP,
можно использовать igbinary_unserialize.
&reftitle.parameters;
value
Значение, которое необходимо сериализовать. igbinary_serialize
обрабатывает все типы, кроме ресурсов (resource) и некоторых объектов (object) (смотрите примечание ниже).
Даже массивы (&array;), содержащие ссылки на себя, могут быть сериализованы функцией igbinary_serialize.
Циклические ссылки внутри сериализующихся массивов (&array;) или объектов (&object;) также будут сохранены.
Любая другая ссылка будет потеряна.
При сериализации объектов, igbinary будет пытаться вызвать функции
__serialize() или __sleep() перед сериализацией.
Это позволит объекту выполнить любую очистку в последнюю минуту и т.д. перед сериализацией.
Аналогичным образом, когда объект восстанавливается с помощью igbinary_unserialize,
вызывается функция __unserialize() или
__wakeup().
Начало имён закрытых членов объекта (&object;) дополняются именем класса,
а начало имён защищённых членов символом '*'.
Эти дополненные значения окружаются нулевым байтом с обеих сторон.
&reftitle.returnvalues;
Возвращает строку, содержащую представление потока байтов value,
которое может быть сохранено где угодно.
Обратите внимание, что это двоичная строка, которая может включать в себя любое байтовое значение
и должна храниться и обрабатываться как таковая.
Например, вывод функции igbinary_serialize обычно должен храниться
в поле базы данных BLOB, а не в поле CHAR или TEXT.
&reftitle.examples;
Пример использования igbinary_serialize
]]>
&example.outputs;
'test',
1 => 'test',
)
]]>
&reftitle.notes;
Обратите внимание, что многие встроенные объекты PHP не могут быть сериализованы.
Однако те, у кого есть такая возможность, реализуют либо интерфейс Serializable,
либо магические методы __serialize()/__unserialize()
или __sleep()/__wakeup().
Если внутренний класс не соответствует ни одному из этих требований,
он не может быть надёжно сериализован с помощью какого-либо сериализатора.
Есть несколько исторических исключений из приведённого выше правила, когда некоторые внутренние объекты
могут быть сериализованы без реализации интерфейса или раскрытия методов.
&reftitle.seealso;
serializeigbinary_unserializevar_exportjson_encodeСериализация объектов__sleep()__wakeup()__serialize()__unserialize()