1
0
mirror of https://github.com/php/doc-fr.git synced 2026-03-24 15:12:13 +01:00
Files
archived-doc-fr/reference/igbinary/functions/igbinary-serialize.xml
2023-11-21 00:54:50 +00:00

160 lines
6.1 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: a2565b4e1fb47d92047f356cd56b26ca502fec15 Maintainer: moradZahid Status: ready -->
<!-- Reviewed: no -->
<refentry xml:id="function.igbinary-serialize" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<refnamediv>
<refname>igbinary_serialize</refname>
<refpurpose>Génère une représentation binaire stockable et compacte d'une valeur</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type class="union"><type>string</type><type>false</type></type><methodname>igbinary_serialize</methodname>
<methodparam><type>mixed</type><parameter>value</parameter></methodparam>
</methodsynopsis>
<para>
Génère une représentation stockable d'une valeur.
</para>
<para>
C'est une technique pratique pour stocker ou passer des valeurs PHP entre scripts, sans perdre leur structure ni leur type.
</para>
<para>
Pour reconvertir la chaîne de caractères sérialisée en une valeur PHP,
la fonction <function>igbinary_unserialize</function> peut être utilisée.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<variablelist>
<varlistentry>
<term><parameter>value</parameter></term>
<listitem>
<para>
La valeur à sérialiser. <function>igbinary_serialize</function>
gère tous les types sauf les <type>ressource</type>s et certains <type>objet</type>s (confère la note ci-dessous).
Même des &array;x qui contiennent des références à eux-même peuvent être sérialisé avec <function>igbinary_serialize</function>.
Les références circulaires à l'intérieur d'un &array; ou d'un &object; à sérialiser seront également stockées.
Toute autre référence sera perdue.
</para>
<para>
Lorsqu'il sérialise des objets, igbinary tentera d'appeler les méthodes magiques
<link linkend="object.serialize">__serialize()</link> ou
<link linkend="object.sleep">__sleep()</link> avant la sérialisation.
Cela permettra à l'objet de faire un nettoyage de dernière minute, etc., avant d'être sérialisé.
De même, lorsque l'objet est restauré en utilisant la fonction
<function>igbinary_unserialize</function>, une des méthodes magiques <link linkend="object.unserialize">__unserialize()</link>
ou <link linkend="object.wakeup">__wakeup()</link> est appelée.
</para>
<note>
<para>
Les attributs privés d'un objet auront le nom de la classe préfixé au nom de l'attribut;
les attributs protégés seront préfixés avec un astérisque <literal>'*'</literal>.
Ces valeurs préfixées ont des caractères nuls des deux cotés.
</para>
</note>
</listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Retourne une chaîne de caractères contenant une représentation du paramètre <parameter>value</parameter>
sous forme de flux d'octets qui peut être stocké à n'importe quel endroit.
</para>
<para>
Il est à noter que c'est une chaîne binaire qui peut inclure des caractères nuls, et doit donc être stockée et gérée comme telle.
Par exemple, dans une base de données, la sortie de la fonction <function>igbinary_serialize</function>
doit, en général, être stockée dans un champ de type <literal>BLOB</literal>
plutôt que dans un champ de type <literal>CHAR</literal> ou <literal>TEXT</literal>.
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title><function>igbinary_serialize</function> example</title>
<title>Exemple avec <function>igbinary_serialize</function></title>
<programlisting role="php">
<![CDATA[
<?php
$ser = igbinary_serialize(['test', 'test']);
echo urlencode($ser), "\n";
var_export(igbinary_unserialize($ser));
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
%00%00%00%02%14%02%06%00%11%04test%06%01%0E%00
array (
0 => 'test',
1 => 'test',
)
]]>
</screen>
</example>
</para>
</refsect1>
<refsect1 role="notes">
&reftitle.notes;
<note>
<para>
Il est à noter que de nombreux objets internes de PHP ne peuvent pas être sérialisés. Cependant, ceux qui le peuvent
implémentent soit l'interface <interfacename>Serializable</interfacename> soit les méthodes magiques
<link linkend="object.serialize">__serialize()</link>/<link linkend="object.unserialize">__unserialize()</link>
ou <link linkend="object.sleep">__sleep()</link>/<link linkend="object.wakeup">__wakeup()</link>.
Si une classe interne ne remplit aucune de ces conditions, elle ne peut pas être sérialisée de manière fiable.
</para>
<para>
Il existe des exceptions historiques à cette règle, où des objets internes peuvent être sérialisés
sans implémenter ni l'interface ni les méthodes magiques.
</para>
</note>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>serialize</function></member>
<member><function>igbinary_unserialize</function></member>
<member><function>var_export</function></member>
<member><function>json_encode</function></member>
<member><link linkend="language.oop5.serialization">Sérialisation d'objets</link></member>
<member><link linkend="object.sleep">__sleep()</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
-->