(PHP 4, PHP 5)
serialize — Genera una representación apta para el almacenamiento de un valor
Genera una representación almacenable de un valor.
Esto es útil para el almacenamiento de valores en PHP sin perder su tipo y estructura.
Para recuperar el valor PHP a partir de la cadena seriada, utilice unserialize().
value
El valor a ser serializado. serialize() maneja todos los tipos, excepto el tipo resource. Puede incluso usar serialize() sobre arrays que contienen referencias a ellos mismos. Las referencias circulares encontradas en el array/objeto que que procede a serializar también serán almacenadas. Cualquier otra referencia se perderá.
Cuando seria objetos, PHP intentará llamar a la función miembro __sleep() 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 unserialize(), la función miembro __wakeup() es llamada.
Nota:
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.
Devuelve una cadena que contiene una representación de flujo de bytes del
value
que puede ser almacenada en cualquier parte.
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 serialize() 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.
Ejemplo #1 Ejemplo serialize()
<?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.. */
}
}
?>
Versión | Descripción |
---|---|
4.0.7 | El proceso de serialización de objetos fue corregido. |
Nota:
Tenga en cuenta que muchos objetos integrados de PHP no se pueden serializar. Sin embargo, aquellos con esta habilidad o implementan la interfaz Serializable o los métodos mágicos __sleep() y __wakeup(). Si una clase interna no cumple cualquiera de esos requisitos, estas seguramente no puedan ser serializadas.
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 ArrayObject anterior a PHP 5.2.0.