--- 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 и специальные функции для превращения объекта в массив и обратно.