Интерфейс для индивидуальной сериализации. Классы, реализующие этот интерфейс, больше не поддерживают __sleep() и __wakeup() . Метод сериализации вызывается всякий раз, когда необходимо сериализовать экземпляр. Это не вызывает __destruct() и не имеет других побочных эффектов, если только это не запрограммировано внутри метода. Когда данные несериализованы, класс известен, и соответствующий метод unserialize() вызывается как конструктор вместо вызова __construct(). Если вам нужно выполнить стандартный конструктор, вы можете сделать это в методе.
interface Serializable {
/* Methods */
public serialize(): ?string
public unserialize(string $data): void
}
Пример:
<?php
class obj implements Serializable {
private $data;
public function __construct() {
$this->data = "My private 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());
?>
Serializable::serialize
Serializable::serialize — Строковое представление объекта
public Serializable::serialize(): ?string
Должен возвращать строковое представление объекта.
Serializable::unserialize
Serializable::unserialize — Создает объект
public Serializable::unserialize(string $data): void
Возвращаемое значение этого метода игнорируется.
0 комментариев