Serialização de objetos em PHP: funções, métodos e exemplos práticos

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Serialização de objetos em PHP: do básico às técnicas avançadas



Serialização é o processo de converter estruturas de dados complexas (objetos, arrays) em um formato linear, adequado para armazenamento ou transmissão. Em PHP, esse mecanismo é especialmente importante para preservar o estado de objetos entre requisições, transmitir dados via API ou gravar em bancos de dados. Neste artigo, abordaremos detalhadamente todos os aspectos da serialização em PHP.



O que é serialização e para que serve?



A serialização permite "congelar" um objeto em uma string e, em seguida, restaurá-lo. Isso é útil nos seguintes cenários:

  • Salvar sessões de usuário (o PHP serializa automaticamente os dados da sessão)
  • Armazenar em cache objetos complexos no Redis ou Memcached
  • Transmitir objetos entre microsserviços
  • Armazenar configurações em arquivos
  • Depuração e registro de estado de objetos


Serialização básica: serialize() e unserialize()



O PHP fornece duas funções principais para trabalhar com serialização:



<?phpclass User {    public $name;    public $email;    private $password;

public function __construct($name, $email, $password) { $this->name = $name; $this->email = $email; $this->password = $password; }}

$user = new User('João Silva', 'joao@example.com', 'secret123');$serialized = serialize($user);echo $serialized;// Saída: O:4:"User":3:{s:4:"name";s:10:"João Silva";s:5:"email";s:16:"joao@example.com";s:14:"\\0User\\0password";s:9:"secret123";}

// Restaurando o objeto$unserialized = unserialize($serialized);echo $unserialized->name; // João Silva?>


Importante: A função serialize() processa todas as propriedades do objeto, incluindo privadas e protegidas. Propriedades privadas são codificadas com o prefixo \\0ClassName\\0, protegidas com \\0*\\0.



Métodos mágicos __sleep() e __wakeup()



Para controlar o processo de serialização, o PHP fornece dois métodos mágicos:



  • __sleep() — chamado antes da serialização. Deve retornar um array com os nomes das propriedades a serem serializadas.
  • __wakeup() — chamado após a desserialização. Usado para reinicializar recursos (por exemplo, conexões com banco de dados).


<?phpclass DatabaseConnection {    private $connection;    private $dsn;    private $username;    private $password;    private $cache = [];

public function __construct($dsn, $username, $password) { $this->dsn = $dsn; $this->username = $username; $this->password = $password; $this->connect(); }

private function connect() { // Simulação de conexão com banco de dados $this->connection = new stdClass(); $this->connection->connected = true; }

public function __sleep() { // Não serializar o recurso de conexão e a senha return ['dsn', 'username', 'cache']; }

public function __wakeup() { // Restaurar a conexão após desserialização $this->connect(); }}

$db = new DatabaseConnection('mysql:host=localhost;dbname=test', 'root', 'pass');$serialized = serialize($db);$restored = unserialize($serialized);?>


Serialização em JSON: json_encode() e json_decode()



JSON é um formato mais universal, suportado por muitas linguagens de programação. Em PHP, para serialização em JSON, são usadas as funções json_encode() e json_decode().



<?phpclass Product {    public $id;    public $name;    public $price;

public function __construct($id, $name, $price) { $this->id = $id; $this->name = $name; $this->price = $price; }}

$product

Recommendations