Встроенные интерфейсы и классы
PHP Manual

Интерфейс Serializable

(PHP 5 >= 5.1.0, PHP 7)

Введение

Интерфейс для индивидуальной сериализации.

Классы, которые реализуют этот интерфейс не поддерживают больше __sleep() и __wakeup(). Метод serialize вызывается всякий раз, когда необходима сериализация экземпляру класса. Этот метод не вызывает __destruct() и не имеет никаких побочных действий кроме тех, которые запрограммированы внутри него. Когда данные десериализуются, класс известен и соответствующий метод unserialize() вызывается как конструктор вместо вызова __construct(). Если вам необходимо вызвать стандартный конструктор, вы можете это сделать в этом методе.

Обратите внимание, что когда старый объект класса, который сейчас реализует этот интерфейс, а ранее не реализовывал его и был сериализован, то в случае десериализации будет вызван метод __wakeup() вместо метода десериализации. Это может быть полезно в случае миграции.

Обзор интерфейсов

Serializable {
/* Методы */
abstract public string serialize ( void )
abstract public void unserialize ( string $serialized )
}

Пример #1 Основы использования

<?php
class obj implements Serializable {
    private 
$data;
    public function 
__construct() {
        
$this->data "Мои закрытые данные";
    }
    public function 
serialize() {
        return 
serialize($this->data);
    }
    public function 
unserialize($data) {
        
$this->data unserialize($data);
    }
    public function 
getData() {
        return 
$this->data;
    }
}

$obj = new obj;
$ser serialize($obj);

var_dump($ser);

$newobj unserialize($ser);

var_dump($newobj->getData());
?>

Результатом выполнения данного примера будет что-то подобное:

string(38) "C:3:"obj":44:{s:36:"Мои закрытые данные";}"
string(15) "Мои закрытые данные"

Содержание


Встроенные интерфейсы и классы
PHP Manual