Php Serialização

RMAG news

Serialização e Desserialização em PHP

O que é Serialização?

Serialização é o processo de converter um objeto ou uma estrutura de dados em uma string. Esta string pode ser armazenada em um arquivo, transmitida pela rede ou armazenada em um banco de dados. A principal vantagem da serialização é que ela permite salvar o estado de um objeto de uma forma que possa ser facilmente recuperada mais tarde.

O que é Desserialização?

Desserialização é o processo inverso da serialização. Ela converte uma string serializada de volta em um objeto ou estrutura de dados original. Isso é útil para recuperar o estado de um objeto que foi salvo anteriormente.

Funções de Serialização em PHP

PHP fornece funções embutidas para serialização e desserialização:

serialize()

A função serialize() converte um valor PHP em uma string serializada.

$dados = array(‘nome’ => ‘João’, ‘idade’ => 30);
$string_serializada = serialize($dados);
echo $string_serializada;

Saída:

a:2:{s:4:”nome”;s:4:”João”;s:5:”idade”;i:30;}

unserialize()

A função unserialize() converte uma string serializada de volta ao seu valor original.

$string_serializada = ‘a:2:{s:4:”nome”;s:4:”João”;s:5:”idade”;i:30;}’;
$dados = unserialize($string_serializada);
print_r($dados);

Saída:

Array
(
[nome] => João
[idade] => 30
)

Casos de Uso Comuns

Armazenamento de Sessões

A serialização é frequentemente usada para armazenar dados de sessão. Quando um utilizador faz login em um site, seus dados podem ser armazenados em uma sessão usando serialize(). Quando o utilizador retorna, os dados da sessão podem ser recuperados com unserialize().

Cache de Dados

Serialização é útil para cache de dados complexos. Por exemplo, uma resposta de API pode ser serializada e armazenada em cache para evitar fazer a mesma chamada repetidamente.

Persistência de Objetos

Objetos em PHP podem ser serializados e armazenados em um banco de dados. Quando necessário, eles podem ser recuperados e desserializados para restaurar seu estado original.

Considerações de Segurança

Ao utilizar unserialize(), é importante ter cuidado, especialmente com dados vindos de fontes não confiáveis. Um dado malicioso pode explorar vulnerabilidades no código e levar à execução de código arbitrário. Portanto, evite desserializar dados não confiáveis ou valide e sanitize adequadamente os dados antes de desserializar.

Exemplo Prático

Aqui está um exemplo completo de serialização e desserialização de um objeto.

Classe Exemplo

class Pessoa {
public $nome;
public $idade;

public function __construct($nome, $idade) {
$this->nome = $nome;
$this->idade = $idade;
}
}

// Criar um objeto
$pessoa = new Pessoa(“Maria”, 25);

// Serializar o objeto
$serializado = serialize($pessoa);
echo “Serializado: “ . $serializado . n;

// Desserializar o objeto
$pessoa_desserializada = unserialize($serializado);
echo “Desserializado: “ . $pessoa_desserializada->nome . “, “ . $pessoa_desserializada->idade . n;

Saída

Serializado: O:6:”Pessoa”:2:{s:4:”nome”;s:5:”Maria”;s:5:”idade”;i:25;}
Desserializado: Maria, 25

Conclusão

A serialização e desserialização em PHP são técnicas poderosas para persistir e transmitir dados. Ao entender e utilizar corretamente serialize() e unserialize(), você pode facilmente salvar e restaurar o estado de dados complexos em suas aplicações PHP.