1
0
mirror of https://github.com/php/doc-ru.git synced 2026-03-24 07:42:22 +01:00
Files
archived-doc-ru/reference/igbinary/functions/igbinary-unserialize.xml

146 lines
7.0 KiB
XML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 43dd38b94fbf8a9e3efc9c5bfde27c14b9e2ce9c Maintainer: sergey Status: ready -->
<!-- Reviewed: no -->
<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="function.igbinary-unserialize">
<refnamediv>
<refname>igbinary_unserialize</refname>
<refpurpose>
Создаёт значение PHP из сохранённого функцией <function>igbinary_serialize</function> представления
</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type>mixed</type><methodname>igbinary_unserialize</methodname>
<methodparam><type>string</type><parameter>str</parameter></methodparam>
</methodsynopsis>
<simpara>
Функция <function>igbinary_unserialize</function> берёт одну сериализованную переменную
из функции <function>igbinary_serialize</function> и преобразовывает её обратно в PHP-значение.
</simpara>
<warning>
<simpara>
Нельзя передавать в функцию <function>igbinary_unserialize</function> ненадёжные пользовательские входные данные.
При десериализации инстанцируются объекты и автоматически загружаются классы, что ведёт к риску загрузки и выполнения кода,
чем пользуются злоумышленники. Вместо этого пользуются безопасным стандартным форматом обмена данными
наподобие JSON, который обрабатывают функциями <function>json_decode</function> и <function>json_encode</function>,
если сериализованные данные требуется передать клиенту.
</simpara>
<simpara>
Сериализованные данные внешнего хранилища проверяют функцией <function>hash_hmac</function>,
если требуется десериализовать такие данные.
Важно убедиться, что никто не подделал данные.
</simpara>
</warning>
<warning>
<simpara>
Формат сериализации модуля igbinary не различает разные ссылочные группы для одного и того же значения.
Каждая PHP-ссылка на заданное значение при десериализации обрабатывается как часть одной и той же группы ссылок,
даже если при сериализации ссылка была частью разных групп ссылок.
</simpara>
</warning>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<variablelist>
<varlistentry>
<term><parameter>str</parameter></term>
<listitem>
<simpara>
Строка, которую сериализовали функцией <function>igbinary_serialize</function>.
</simpara>
<simpara>
После успешного восстановления объекта модуль igbinary автоматически попытается вызвать
методы <link linkend="object.unserialize">__unserialize()</link> или <link linkend="object.wakeup">__wakeup()</link>,
если десериализуемое значение — объект (&object;) и методы определили в классе.
</simpara>
<note>
<title>
Директива
<link linkend="ini.unserialize-callback-func">unserialize_callback_func</link>
</title>
<simpara>
Callback-функция, которую указали в директиве <link linkend="ini.unserialize-callback-func">unserialize_callback_func</link>,
вызывается при десериализации неопределённого класса.
PHP создаст объект <classname>__PHP_Incomplete_Class</classname>,
если callback-функцию не указали.
</simpara>
</note>
</listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<simpara>
Функция возвращает преобразованное значение с типом <type>bool</type>,
<type>int</type>, <type>float</type>, <type>string</type>,
<type>array</type>, <type>object</type> или <type>null</type>.
</simpara>
<simpara>
Функция возвращает &false; и выдаёт
ошибку уровня <constant>E_NOTICE</constant> или <constant>E_WARNING</constant>,
если заданную строку невозможно десериализовать.
</simpara>
</refsect1>
<refsect1 role="errors">
&reftitle.errors;
<simpara>
Иногда в своих обработчиках десериализации объекты выбрасывают исключение <classname>Throwable</classname>.
</simpara>
</refsect1>
<refsect1 role="notes">
&reftitle.notes;
<warning>
<simpara>
Значение &null; или &false; возвращается как при ошибке, так и при десериализации
сериализованного значения &null; или &false;.
Этот особый случай можно определить, сравнив<parameter>str</parameter> с
<code>igbinary_serialize(null)</code> или <code>igbinary_serialize(false)</code>
или обработав выданную ошибку уровня <constant>E_NOTICE</constant>.
</simpara>
</warning>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<simplelist>
<member><function>unserialize</function></member>
<member><function>json_encode</function></member>
<member><function>json_decode</function></member>
<member><function>hash_hmac</function></member>
<member><function>igbinary_serialize</function></member>
<member><link linkend="language.oop5.autoload">Автоматическая загрузка классов</link></member>
<member><link linkend="ini.unserialize-callback-func">unserialize_callback_func</link></member>
<member><link linkend="object.wakeup">__wakeup()</link></member>
<member><link linkend="object.serialize">__serialize()</link></member>
<member><link linkend="object.unserialize">__unserialize()</link></member>
</simplelist>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->