(PECL igbinary >= 1.1.1)
igbinary_unserialize — Создаёт значение PHP из сохранённого функцией igbinary_serialize() представления
Функция igbinary_unserialize() берёт одну сериализованную переменную из функции igbinary_serialize() и преобразовывает её обратно в PHP-значение.
Нельзя передавать в функцию igbinary_unserialize() ненадёжные пользовательские входные данные. При десериализации инстанцируются объекты и автоматически загружаются классы, что ведёт к риску загрузки и выполнения кода, чем пользуются злоумышленники. Вместо этого пользуются безопасным стандартным форматом обмена данными наподобие JSON, который обрабатывают функциями json_decode() и json_encode() , если сериализованные данные требуется передать клиенту.
Сериализованные данные внешнего хранилища проверяют функцией hash_hmac() , если требуется десериализовать такие данные. Важно убедиться, что никто не подделал данные.
Формат сериализации модуля igbinary не различает разные ссылочные группы для одного и того же значения. Каждая PHP-ссылка на заданное значение при десериализации обрабатывается как часть одной и той же группы ссылок, даже если при сериализации ссылка была частью разных групп ссылок.
strЗамечание: Директива unserialize_callback_func
Callback-функция, которую указали в директиве unserialize_callback_func, вызывается при десериализации неопределённого класса. PHP создаст объект __PHP_Incomplete_Class , если callback-функцию не указали.
Функция возвращает преобразованное значение с типом bool , int , float , string , array , object или null .
Функция возвращает false и выдаёт
ошибку уровня E_NOTICE или E_WARNING ,
если заданную строку невозможно десериализовать.
Иногда в своих обработчиках десериализации объекты выбрасывают исключение Throwable .
This little function returns true if a data string was made by igbinary_serialize() and can be passed to igbinary_unseriaize().
function is_igbinary($data) {
return is_string($data) && '00000002' === bin2hex(substr($data, 0, 4));
}
It doesn't validate the contents of the data string, or ensure it is safe to decode if it came from an untrusted source. But it is handy when trying to avoid unserializing data that wasn't serialized.