mirror of
https://github.com/php/doc-es.git
synced 2026-04-26 00:28:03 +02:00
f4311e7a8a
git-svn-id: https://svn.php.net/repository/phpdoc/es/trunk@337560 c90b9560-bf6c-de11-be94-00142212c4b1
262 lines
8.3 KiB
XML
262 lines
8.3 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<!-- $Revision$ -->
|
|
<!-- EN-Revision: 6e6d82f0970ebfa4f3322e96efb6f9d0cc114205 Maintainer: aeoris Status: ready -->
|
|
<!-- Reviewed: no Maintainer: aeoris -->
|
|
<refentry xml:id="function.unserialize" xmlns="http://docbook.org/ns/docbook">
|
|
<refnamediv>
|
|
<refname>unserialize</refname>
|
|
<refpurpose>
|
|
Crea un valor PHP a partir de una representación almacenada
|
|
</refpurpose>
|
|
</refnamediv>
|
|
|
|
<refsect1 role="description">
|
|
&reftitle.description;
|
|
<methodsynopsis>
|
|
<type>mixed</type><methodname>unserialize</methodname>
|
|
<methodparam><type>string</type><parameter>str</parameter></methodparam>
|
|
<methodparam choice="opt"><type>array</type><parameter>options</parameter></methodparam>
|
|
</methodsynopsis>
|
|
<simpara>
|
|
<function>unserialize</function> toma una única variable serializada y
|
|
la vuelve a convertir a un valor de PHP.
|
|
</simpara>
|
|
</refsect1>
|
|
|
|
<refsect1 role="parameters">
|
|
&reftitle.parameters;
|
|
<para>
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term><parameter>str</parameter></term>
|
|
<listitem>
|
|
<para>
|
|
El string serializado.
|
|
</para>
|
|
<para>
|
|
Si la variable que está siendo convertida de vuelta es un objeto, PHP
|
|
intentará llamar la función miembro <link linkend="object.wakeup">__wakeup()</link>
|
|
si existe) automáticamente luego de haber recontruido satisfactoriamente
|
|
el objeto.
|
|
</para>
|
|
<para>
|
|
<note>
|
|
<title>Directiva unserialize_callback_func</title>
|
|
<para>
|
|
Es posible establecer una función-llamada de retorno la cual será
|
|
llamada si una clase no definida debería ser instanciada durante el
|
|
proceso de revertir la seriación(para prevenir que se reciba un <type>object</type> incompleto "__PHP_Incomplete_Class".)
|
|
Use su &php.ini;, <function>ini_set</function> o &htaccess;
|
|
para definir '<literal>unserialize_callback_func</literal>'. Cada vez que una clase no definida
|
|
deba ser instanciada, esta función será llamada. Para deshabilitar esta característica simplemente
|
|
asigne un valor vacío a este parámetro.
|
|
</para>
|
|
</note>
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><parameter>options</parameter></term>
|
|
<listitem>
|
|
<para>
|
|
Cualquier opción para <function>unserialize</function>, dada como un
|
|
array asociativo.
|
|
</para>
|
|
<table>
|
|
<title>Opciones válidas</title>
|
|
<tgroup cols="3">
|
|
<thead>
|
|
<row>
|
|
<entry>Nombre</entry>
|
|
<entry>Tipo</entry>
|
|
<entry>Descripción</entry>
|
|
</row>
|
|
</thead>
|
|
<tbody>
|
|
<row>
|
|
<entry><literal>allowed_classes</literal></entry>
|
|
<entry><type>mixed</type></entry>
|
|
<entry>
|
|
<simpara>
|
|
Puede ser un <type>array</type> de nombres de clases que deben ser
|
|
aceptadas, &false; para no aceptar clases, o &true; para aceptar todas
|
|
las clases. Si esta opción se define y
|
|
<function>unserialize</function> encuentra un objeto de una clase
|
|
que no se acepta, el objeto será instanciado como
|
|
<classname>__PHP_Incomplete_Class</classname> en su lugar.
|
|
</simpara>
|
|
<simpara>
|
|
La omisión de esta opción es lo mismo que definirla como &true;: PHP
|
|
intentará instanciar objetos de cualquier clase.
|
|
</simpara>
|
|
</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</para>
|
|
</refsect1>
|
|
|
|
<refsect1 role="returnvalues">
|
|
&reftitle.returnvalues;
|
|
<para>
|
|
El valor convertido es retornado, y puede ser un <type>boolean</type>,
|
|
<type>integer</type>, <type>float</type>, <type>string</type>,
|
|
<type>array</type> u <type>object</type>.
|
|
</para>
|
|
<para>
|
|
En caso de que el string pasado no pueda ser procesado para revertir la
|
|
serialización, se devuelve &false; y un error de tipo
|
|
<constant>E_NOTICE</constant> es generado.
|
|
</para>
|
|
</refsect1>
|
|
|
|
<refsect1 role="changelog">
|
|
&reftitle.changelog;
|
|
<para>
|
|
<informaltable>
|
|
<tgroup cols="2">
|
|
<thead>
|
|
<row>
|
|
<entry>&Version;</entry>
|
|
<entry>&Description;</entry>
|
|
</row>
|
|
</thead>
|
|
<tbody>
|
|
<row>
|
|
<entry>7.0.0</entry>
|
|
<entry>
|
|
Se añadió el parámetro <parameter>options</parameter>.
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>5.6.0</entry>
|
|
<entry>
|
|
Manipular los datos serializados reemplazando <literal>C:</literal>
|
|
con <literal>O:</literal> para forzar la instanciación de objetos sin
|
|
llamar al constructor ahora fallará.
|
|
</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</informaltable>
|
|
</para>
|
|
</refsect1>
|
|
|
|
<refsect1 role="examples">
|
|
&reftitle.examples;
|
|
<para>
|
|
<example>
|
|
<title>Ejemplo de <function>unserialize</function></title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
// Aquí usamos unserialize() para cargar los datos de sesión
|
|
// provenientes del string seleccionado desde la base de datos en el
|
|
// array $datos_sesion. Este ejemplo complementa aquel descrito con serialize().
|
|
|
|
$con = odbc_connect("bd_web", "php", "gallina");
|
|
$sent = odbc_prepare($con, "SELECT datos FROM sesiones WHERE id = ?");
|
|
$datos_sql = array($_SERVER['PHP_AUTH_USER']);
|
|
|
|
if (!odbc_execute($sent, &$datos_sql) || !odbc_fetch_into($sent, &$tmp)) {
|
|
// si la ejecución del comando o la recuperación de datos falla,
|
|
// inicializar una matriz vacía
|
|
$datos_sesion = array();
|
|
} else {
|
|
// ahora deberíamos tener los datos serializados en $tmp[0].
|
|
$datos_sesion = unserialize($tmp[0]);
|
|
if (!is_array($datos_sesion)) {
|
|
// algo ha fallado, inicializar un array vacío
|
|
$datos_sesion = array();
|
|
}
|
|
}
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
</para>
|
|
<para>
|
|
<example>
|
|
<title>Ejemplo de unserialize_callback_func</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
$objeto_seriado='O:1:"a":1:{s:5:"valor";s:3:"100";}';
|
|
|
|
// la directiva unserialize_callback_func está disponible a partir de PHP 4.2.0
|
|
ini_set('unserialize_callback_func', 'mi_llamada_de_retorno'); // defina su callback_function
|
|
|
|
function mi_llamada_de_retorno($nombre_clase)
|
|
{
|
|
// tan solo incluya un fichero que contenga su definición de clase
|
|
// recibe $nombre_clase para determinar qué definición de clase requiere
|
|
}
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
</para>
|
|
</refsect1>
|
|
|
|
<refsect1 role="notes">
|
|
&reftitle.notes;
|
|
<warning>
|
|
<para>
|
|
&false; es devuelto tanto en el caso de un error como cuando se
|
|
convierte el valor seriado &false;. Es posible atrapar este caso especial
|
|
comparando <parameter>str</parameter> con
|
|
<literal>serialize(false)</literal> o atrapando el error
|
|
<constant>E_NOTICE</constant> generado.
|
|
</para>
|
|
</warning>
|
|
<warning>
|
|
<para>
|
|
No proporcione datos no fiables provenientes del usuario a <function>unserialize</function>.
|
|
Revertir la serialización puede resultar en que haya código que se cargue y ejecute debido a la instanciación
|
|
y autocarga de objetos, y un usuario malicioso podría ser capaz de explotar
|
|
esto. Se debe utilizar un formato de intercambio de datos seguro y estándar, como JSON (a través de
|
|
<function>json_decode</function> y <function>json_encode</function>) si
|
|
es necesario pasar datos serializados al usuario.
|
|
</para>
|
|
</warning>
|
|
</refsect1>
|
|
|
|
<refsect1 role="seealso">
|
|
&reftitle.seealso;
|
|
<para>
|
|
<simplelist>
|
|
<member><function>serialize</function></member>
|
|
<member><link linkend="language.oop5.autoload">Autocarga de clases</link></member>
|
|
<member><link linkend="unserialize-callback-func">unserialize_callback_func</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
|
|
-->
|