Files
doc-fr/reference/igbinary/functions/igbinary-unserialize.xml
2022-06-05 13:25:34 +01:00

154 lines
6.3 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: aa19c140e6be8b9c324c32ace850dfc2911891a2 Maintainer: moradZahid 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>
Crée une variable PHP à partir d'une valeur linéarisée par <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> prend une variable linéarisée par
<function>igbinary_serialize</function> et la convertit en une variable PHP.
</simpara>
<warning>
<para>
Les entrées utilisateur non fiables ne doivent pas être passées à la fonction
<function>igbinary_unserialize</function>.
La délinéarisation peut résulter en une exécution de code chargé et exécuté lors de l'instanciation
et l'autochargement d'objet, et ainsi, un utilisateur mal intentionné peut être capable d'exploiter
ce comportement.
À la place, un standard d'échange sûr tel que JSON (via <function>json_decode</function> et
<function>json_encode</function>) doit être utilisé pour passer des données linéarisées à l'utilisateur.
</para>
<para>
S'il est indispensable de délinéariser des données linéarisées provenant de l'extérieur, la fonction
<function>hash_hmac</function> peut être utilisée pour valider les données.
Il est important de vérifier que personne n'a altéré les données.
</para>
</warning>
<warning>
<para>
Le protocole de linéarisation par igbinary ne permet pas de distinguer entre les différents groupes de
références. Toutes les références PHP à une valeur donnée sont vues comme membres d'un même
groupe lors de la délinéarisation, même si elles appartenaient à des groupes différents avant la
linéarisation.
</para>
</warning>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<variablelist>
<varlistentry>
<term><parameter>str</parameter></term>
<listitem>
<para>
La chaîne de caractères linéarisée, générée par <function>igbinary_serialize</function>.
</para>
<para>
Si la variable délinéarisée est un &object;, après avoir réussi à le reconstruire,
PHP tentera automatiquement d'appeller les méthodes magiques
<link linkend="object.unserialize">__unserialize()</link> ou
<link linkend="object.wakeup">__wakeup()</link> (si l'une d'elles existe).
</para>
<para>
<note>
<title>La directive unserialize_callback_func</title>
<para>
Il est possible de définir une fonction de rappel qui sera appelée si une classe
doit être instanciée lors de la délinéarisation alors que cette dernière n'est pas actuellement
définie (afin d'éviter de créer un <type>object</type> de la classe
<literal>__PHP_Incomplete_Class</literal>.)
Les fichiers &php.ini;, &htaccess; ou la fonction <function>ini_set</function> peuvent être
utilisés pour définir <link linkend="ini.unserialize-callback-func">unserialize_callback_func</link>.
Elle sera appelée chaque fois qu'une classe non actuellement définie sera instanciée.
Pour désactiver cette fonctionnalité, il suffit de mettre la valeur de l'option au caractère nul.
</para>
</note>
</para>
</listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
La valeur convertie est retournée par la fonction, et peut être de type <type>&boolean;</type>,
<type>&integer;</type>, <type>&float;</type>, <type>&string;</type>,
<type>&array;</type>, <type>&object;</type>, ou de type <type>null</type>.
</para>
<para>
Si la chaîne de caractères passée ne peut pas être délinéarisée, cette fonction retourne &false;
et un diagnostic <constant>E_NOTICE</constant> ou <constant>E_WARNING</constant> est émis.
</para>
</refsect1>
<refsect1 role="errors">
&reftitle.errors;
<para>
Les objets peuvent lancer un <classname>Throwable</classname> dans leur gestionnaire de délinéarisation.
</para>
</refsect1>
<refsect1 role="notes">
&reftitle.notes;
<warning>
<para>
&null; ou &false; est retourné soit dans le cas d'une erreur soit après avoir délinéarisé
le résultat de la linéarisation de &null; ou &false;. Il est possible de discriminer entre ces deux cas
spéciaux en comparant la valeur du paramètre <parameter>str</parameter> avec le résultat de l'exécution
de <code>igbinary_serialize(null)</code> ou de <code>igbinary_serialize(false)</code>
ou bien en attrapant un diagnostic <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">Auto-chargement de classes</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
-->