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

155 lines
5.9 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 43dd38b94fbf8a9e3efc9c5bfde27c14b9e2ce9c Maintainer: PhilDaiguille Status: ready -->
<!-- Reviewed: no -->
<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="function.igbinary-serialize">
<refnamediv>
<refname>igbinary_serialize</refname>
<refpurpose>Genera una representación binaria almacenable y compacta de un valor</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>
<simpara>
Genera una representación almacenable de un valor.
</simpara>
<simpara>
Es una técnica práctica para almacenar o pasar valores PHP entre scripts, sin perder su estructura ni su tipo.
</simpara>
<simpara>
Para reconvertir la cadena sérializada en un valor PHP,
la función <function>igbinary_unserialize</function> puede ser utilizada.
</simpara>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<variablelist>
<varlistentry>
<term><parameter>value</parameter></term>
<listitem>
<simpara>
El valor a serializar. <function>igbinary_serialize</function>
gestiona todos los tipos excepto los <type>recurso</type>s y ciertos <type>objeto</type>s (confiere la nota a continuación).
Incluso los &array;x que contienen referencias a sí mismos pueden ser serializados con <function>igbinary_serialize</function>.
Las referencias circulares dentro de un &array; o de un &object; a serializar serán igualmente almacenadas.
Cualquier otra referencia será perdida.
</simpara>
<simpara>
Al serializar objetos, igbinary intentará llamar a los métodos mágicos
<link linkend="object.serialize">__serialize()</link> o
<link linkend="object.sleep">__sleep()</link> antes de la serialización.
Esto permitirá al objeto realizar una limpieza de último momento, etc., antes de ser serializado.
De igual manera, cuando el objeto es restaurado utilizando la función
<function>igbinary_unserialize</function>, uno de los métodos mágicos <link linkend="object.unserialize">__unserialize()</link>
o <link linkend="object.wakeup">__wakeup()</link> es llamado.
</simpara>
<note>
<simpara>
Los atributos privados de un objeto tendrán el nombre de la clase prefijado al nombre del atributo;
los atributos protegidos serán prefijados con un asterisco <literal>'*'</literal>.
Estos valores prefijados tienen caracteres nulos en ambos lados.
</simpara>
</note>
</listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<simpara>
Retorna una cadena de caracteres que contiene una representación del parámetro <parameter>value</parameter>
en forma de flujo de bytes que puede ser almacenado en cualquier lugar.
</simpara>
<simpara>
Es de notar que es una cadena binaria que puede incluir caracteres nulos, y debe por lo tanto ser almacenada y gestionada como tal.
Por ejemplo, en una base de datos, la salida de la función <function>igbinary_serialize</function>
debe, en general, ser almacenada en un campo de tipo <literal>BLOB</literal>
en lugar de en un campo de tipo <literal>CHAR</literal> o <literal>TEXT</literal>.
</simpara>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<example>
<title>Ejemplo con <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>
</refsect1>
<refsect1 role="notes">
&reftitle.notes;
<note>
<simpara>
Es de notar que muchos objetos internos de PHP no pueden ser serializados. Sin embargo, aquellos que pueden
implementan ya sea la interfaz <interfacename>Serializable</interfacename> o los métodos mágicos
<link linkend="object.serialize">__serialize()</link>/<link linkend="object.unserialize">__unserialize()</link>
o <link linkend="object.sleep">__sleep()</link>/<link linkend="object.wakeup">__wakeup()</link>.
Si una clase interna no cumple ninguna de estas condiciones, no puede ser serializada de manera fiable.
</simpara>
<simpara>
Existen excepciones históricas a esta regla, donde objetos internos pueden ser serializados
sin implementar ni la interfaz ni los métodos mágicos.
</simpara>
</note>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<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">Serialización de objetos</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>
</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
-->