mirror of
https://github.com/php/doc-ru.git
synced 2026-03-24 07:42:22 +01:00
146 lines
7.0 KiB
XML
146 lines
7.0 KiB
XML
<?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
|
||
-->
|