(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
Сериализованная функцией igbinary_serialize() строка.
Если десериализуемое значение является объектом (object), после успешного восстановления объекта, igbinary автоматически попытается вызвать метод __unserialize() или __wakeup() (если таковой существует).
Замечание: unserialize_callback_func directive
Можно установить callback-функцию, которая будет вызываться, если во время десериализации должен быть создан экземпляр неопределённого класса (чтобы предотвратить получение неполного объекта (object)
__PHP_Incomplete_Class
). Для определения unserialize_callback_func могут использоваться файлы php.ini, ini_set() или .htaccess. Каждый раз, когда необходимо создать экземпляр неопределённого класса, callback-функция будет вызываться. Чтобы отключить эту функцию, параметр следует очистить.
Возвращает преобразованное значение, которое может быть bool, int, float, string, array, object или null.
Если переданная строка не может быть десериализована, возвращается false
и выдаётся
ошибка уровня E_NOTICE
или E_WARNING
.
Объекты могут выбрасывать исключение Throwable в своих обработчиках десериализации.
null
или false
возвращается как в случае возникновения ошибки, так и при десериализации
сериализованного значения null
или false
.
Этот особый случай можно определить, сравнивstr
с
igbinary_serialize(null)
или igbinary_serialize(false)
или обработав выданную ошибку уровня E_NOTICE
.