1
0
mirror of https://github.com/php/doc-ru.git synced 2026-03-26 00:32:15 +01:00
Files
archived-doc-ru/reference/igbinary/functions/igbinary-unserialize.xml
Mikhail Alferov bd1d94f2e8 Обновление перевода (#609)
Co-authored-by: Sergey Panteleev <sergey@php.net>
2023-12-26 09:35:17 +03:00

147 lines
7.5 KiB
XML
Raw 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: aa19c140e6be8b9c324c32ace850dfc2911891a2 Maintainer: sergey Status: ready -->
<!-- Reviewed: no -->
<refentry xml:id="function.igbinary-unserialize" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<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>
<para>
Ненадёжные пользовательские входные данные не должны передаваться в <function>igbinary_unserialize</function>.
Десериализация может привести к загрузке и выполнению кода из-за создания экземпляра объекта и автозагрузки, тогда злоумышленник может этим воспользоваться.
Вместо этого следует использовать безопасный стандартный формат обмена данными, такой как JSON (с помощью функций
<function>json_decode</function> и <function>json_encode</function>),
если сериализованные данные необходимо передать клиенту.
</para>
<para>
Если есть необходимость десериализовать сохранённые извне сериализованные данные,
для проверки данных можно использовать функцию <function>hash_hmac</function>.
Важно убедиться, что данные никто не подделал.
</para>
</warning>
<warning>
<para>
Формат сериализации igbinary не позволяет различать разные ссылочные группы для одного и того же значения.
Все ссылки PHP на заданное значение при десериализации обрабатываются как часть одной и той же группы ссылок,
даже если при сериализации они были частями разных групп ссылок.
</para>
</warning>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<variablelist>
<varlistentry>
<term><parameter>str</parameter></term>
<listitem>
<para>
Сериализованная функцией <function>igbinary_serialize</function> строка.
</para>
<para>
Если десериализуемое значение является объектом (&object;), после успешного восстановления
объекта, igbinary автоматически попытается вызвать метод <link linkend="object.unserialize">__unserialize()</link> или
<link linkend="object.wakeup">__wakeup()</link> (если таковой существует).
</para>
<para>
<note>
<title>unserialize_callback_func directive</title>
<para>
Можно установить callback-функцию, которая будет вызываться,
если во время десериализации должен быть создан экземпляр неопределённого класса
(чтобы предотвратить получение неполного объекта (<type>object</type>) <literal>__PHP_Incomplete_Class</literal>).
Для определения <link linkend="ini.unserialize-callback-func">unserialize_callback_func</link> могут использоваться
файлы &php.ini;, <function>ini_set</function> или &htaccess;.
Каждый раз, когда необходимо создать экземпляр неопределённого класса, callback-функция будет вызываться.
Чтобы отключить эту функцию, параметр следует очистить.
</para>
</note>
</para>
</listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Возвращает преобразованное значение, которое может быть <type>bool</type>,
<type>int</type>, <type>float</type>, <type>string</type>,
<type>array</type>, <type>object</type> или <type>null</type>.
</para>
<para>
Если переданная строка не может быть десериализована, возвращается &false; и выдаётся
ошибка уровня <constant>E_NOTICE</constant> или <constant>E_WARNING</constant>.
</para>
</refsect1>
<refsect1 role="errors">
&reftitle.errors;
<para>
Объекты могут выбрасывать исключение <classname>Throwable</classname> в своих обработчиках десериализации.
</para>
</refsect1>
<refsect1 role="notes">
&reftitle.notes;
<warning>
<para>
&null; или &false; возвращается как в случае возникновения ошибки, так и при десериализации
сериализованного значения &null; или &false;.
Этот особый случай можно определить, сравнив<parameter>str</parameter> с
<code>igbinary_serialize(null)</code> или <code>igbinary_serialize(false)</code>
или обработав выданную ошибку уровня <constant>E_NOTICE</constant>.
</para>
</warning>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<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>
</para>
</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
-->