---
title: Сериализация в PHP
description: Проблема долговременного хранения сериализованных данных
keywords: [php, serialization]
---

# Сериализация в PHP

В PHP есть две функции для сериализации и десериализации данных:
`serialize()` и `unserialize()`. Функции встроены в язык,
не требуют дополнительных модулей.

В один момент кто-то решает использовать их для долговременного
хранения объектов. В базе данных, на диске, еще где-то.

```
namespace Test\Serialize;

class A {}

$a = new A();

serialize($a);
```

И тут начинаются проблемы.

Дело в том, что при сериалзации объектов классов кроме самих данных
объекта сохраняется еще и информация о классе. Его имя, пространство имен.

Результатом сериализации в примере выше будет:

```
O:16:"Test\Serialize\A":0:{}O:16:"Test\Serialize\A":0:{}
```

Если теперь произвести рефакторинг, переместить класс,
изменить пространство имен, то десериализация уже не сработает.
И будет больно.

Не делайте так.

Контролируйте процесс сериализации. Например, используйте JSON и специальные
функции для превращения объекта в массив и обратно.