1
0
mirror of https://github.com/php/doc-es.git synced 2026-03-25 16:02:13 +01:00
Files
archived-doc-es/reference/var/functions/serialize.xml
Pedro Antonio Gil Rodríguez 519194c5fb Actualización a la última versión
git-svn-id: https://svn.php.net/repository/phpdoc/es/trunk@334647 c90b9560-bf6c-de11-be94-00142212c4b1
2014-08-28 11:12:00 +00:00

169 lines
5.7 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 8b5940cadeb4f1c8492f4a7f70743a2be807cf39 Maintainer: argosback Status: ready -->
<!-- Reviewed: no -->
<refentry xml:id="function.serialize" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>serialize</refname>
<refpurpose>Genera una representación apta para el almacenamiento de un valor</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type>string</type><methodname>serialize</methodname>
<methodparam><type>mixed</type><parameter>value</parameter></methodparam>
</methodsynopsis>
<para>
Genera una representación almacenable de un valor.
</para>
<para>
Esto es útil para el almacenamiento de valores en PHP sin
perder su tipo y estructura.
</para>
<para>
Para recuperar el valor PHP a partir de la cadena seriada, utilice
<function>unserialize</function>.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>value</parameter></term>
<listitem>
<para>
El valor a ser serializado. <function>serialize</function>
maneja todos los tipos, excepto el tipo <type>resource</type>.
Puede incluso usar <function>serialize</function> sobre arrays que contienen
referencias a ellos mismos. Las referencias circulares encontradas en el array/objeto
que procede a serializar también serán almacenadas. Cualquier
otra referencia se perderá.
</para>
<para>
Cuando se trata de objetos, PHP intentará llamar a la función miembro
<link linkend="object.sleep">__sleep()</link> antes de la serialización.
Esto permite que el objeto efectúe limpiezas de último minuto, etc. antes de ser
serializado. Del mismo modo, cuando el objeto es recuperado usando
<function>unserialize</function>, la función miembro <link linkend="object.wakeup">__wakeup()</link> es llamada.
</para>
<note>
<para>
Los miembros privados del objeto tienen el nombre de la clase al comienzo de
su nombre; los miembros protegidos tienen un '*' al comienzo de su nombre.
estos valores antepuestos tienen bytes nulos a ambos lados.
</para>
</note>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Devuelve una cadena que contiene una representación de flujo de bytes del
<parameter>value</parameter> que puede ser almacenada en cualquier parte.
</para>
<para>
Observe que esto es una cadena binaria que puede incluir bytes nulos, y necesita
ser almacenada y manipulada como tal. Por ejemplo,
la salida de <function>serialize</function> debe ser generalmente almacenada en un campo de tipo BLOB
en la base de datos, en vez de en campos de tipo CHAR o TEXT.
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Ejemplo <function>serialize</function></title>
<programlisting role="php">
<![CDATA[
<?php
// $datos_sesion contiene un array multi-dimensional con
// información del usuario actual. Usamos serialize() para
// almacenarla en una base de datos al final de la petición.
$con = odbc_connect("bd_web", "php", "gallina");
$sent = odbc_prepare($con,
"UPDATE sesiones SET datos = ? WHERE id = ?");
$datos_sql = array (serialize($datos_sesion), $_SERVER['PHP_AUTH_USER']);
if (!odbc_execute($sent, &$datos_sql)) {
$sent = odbc_prepare($con,
"INSERT INTO sesiones (id, datos) VALUES(?, ?)");
if (!odbc_execute($sent, &$datos_sql)) {
/* Algo ha fallado.. */
}
}
?>
]]>
</programlisting>
</example>
</para>
</refsect1>
<refsect1 role="notes">
&reftitle.notes;
<note>
<para>
Tenga en cuenta que muchos objetos integrados de PHP no se pueden serializar. Sin embargo, aquellos con
esta habilidad o implementan la interfaz <interfacename>Serializable</interfacename> o los métodos mágicos
<link linkend="object.sleep">__sleep()</link> y <link linkend="object.wakeup">__wakeup()</link>. Si una
clase interna no cumple cualquiera de esos requisitos, estas seguramente no puedan ser
serializadas.
</para>
<para>
Hay algunas excepciones históricas a la regla anterior, donde algunos objetos internos
podrían ser serializados sin implementar la interfaz o la exposición de los métodos. En particular,
la clase <classname>ArrayObject</classname> anterior a PHP 5.2.0.
</para>
</note>
<warning>
<para>
Cuando <function>serialize</function> serializa los objetos, la barra inicial no está incluido en el nombre de clase de las clases de espacios de nombres para una máxima compatibilidad.
</para>
</warning>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>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>
</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
-->