serialize
(PHP 4, PHP 5, PHP 7, PHP 8)
serialize — Gera uma representação armazenável de um valor
Descrição
Gera uma representação armazenável de um valor.
É útil para armazenar ou passar um valor do PHP sem perder seu tipo ou estrutura.
Para restaurar uma string serializada de volta a um valor PHP, use unserialize().
Parâmetros
value
-
O valor a ser serializado. serialize() lida com todos os tipos, exceto recursos (resource) e alguns objetos (object)s (veja nota abaixo). Pode-se até usar serialize() para array que contenha referência a si mesmo. Referências circulaes dentro do array/objeto a ser serializado também serão armazenadas. Qualquer outra referência será perdida.
Ao serializar objetos, o PHP tentará chamar as funções membro __serialize() ou __sleep() antes da serialização. Isto serve para permitir ao objeto alguma limpeza de última hora, etc. antes de ser realizado. Da mesma forma, quando o objeto é restaurado usando unserialize(), a função membro __unserialize() ou __wakeup() será chamada.
Note:
Os membros privados terão o nome da classe prefixando o nome do membro; membros protegidos terão um '*' prefixando o nome. Estes prefixos serão envolvidos por bytes nulos, um de cada lado.
Valor Retornado
Retorna uma string contendo uma representação em fluxo de bytes de
value
que pode ser armazenada em qualquer lugar.
Note que esta string é binária e pode incluir bytes nulos, e precisa ser armazenada e gerenciada como tal. Por exemplo, a saída de serialize() deveria ser armazenada geralmente em um campo BLOB de um banco de dados, e não em um campo tipo CHAR ou TEXT.
Exemplos
Example #1 Exemplo de serialize()
<?php
// $session_data contém um array multi-dimensional com informação
// de sessão do usuário atual. serialize() será utilizada para armazenar
// a variável em um banco de dados ao final da requisição.
$conn = odbc_connect("webdb", "php", "chicken");
$stmt = odbc_prepare($conn,
"UPDATE sessions SET data = ? WHERE id = ?");
$sqldata = array (serialize($session_data), $_SERVER['PHP_AUTH_USER']);
if (!odbc_execute($stmt, $sqldata)) {
$stmt = odbc_prepare($conn,
"INSERT INTO sessions (id, data) VALUES(?, ?)");
if (!odbc_execute($stmt, array_reverse($sqldata))) {
/* Algo deu errado.. */
}
}
?>
Notas
Note:
Note que muitos objetos internos do PHP não podem ser serializados. Entretando, os que tiverem esta habilidade ou implementam a interface Serializable ou os métodos mágicos __serialize()/__unserialize() ou __sleep()/__wakeup(). Se uma classe interna não preencher algum desses requisitos, ela não poderá ser serializada com confiança.
Existem algumas exceções histórias à regra acima, onde alguns objetos internos poderiam ser serializados sem implementar a interface ou expor os métodos.
Quando serialize() serializa objetos, a barra invertida no início não é incluída nas classes com espaço de nomes para máxima compatibilidade.
Veja Também
- unserialize() - Cria um valor PHP a partir de uma representação armazenada
- var_export() - Mostra ou retorna uma representação string analisável de uma variável
- json_encode() - Retorna a representação JSON de um valor
- Serializando Objetos
- __sleep()
- __wakeup()
- __serialize()
- __unserialize()