Добавлено ограничение строк для статей

This commit is contained in:
Anton Vakhrushev 2019-05-03 13:30:59 +03:00
parent 4b9d9b8f41
commit 73235f0baa
2 changed files with 13 additions and 9 deletions

View File

@ -0,0 +1,2 @@
[*.md]
max_line_length = 80

View File

@ -6,13 +6,14 @@ keywords: [php, serialization]
# Сериализация в PHP # Сериализация в PHP
В PHP есть две функции для сериализации и десериализации данных: `serialize()` и `unserialize()`. В PHP есть две функции для сериализации и десериализации данных:
Функции встроены в язык, не требуют дополнительных модулей. `serialize()` и `unserialize()`. Функции встроены в язык,
не требуют дополнительных модулей.
В один момент кто-то решает использовать их для долговременного хранения объектов. В один момент кто-то решает использовать их для долговременного
В базе данных, на диске, еще где-то. хранения объектов. В базе данных, на диске, еще где-то.
``` ```php
namespace Test\Serialize; namespace Test\Serialize;
class A {} class A {}
@ -24,8 +25,8 @@ serialize($a);
И тут начинаются проблемы. И тут начинаются проблемы.
Дело в том, что при сериалзации объектов классов кроме самих данных объекта сохраняется еще и информация о классе. Дело в том, что при сериалзации объектов классов кроме самих данных
Его имя, пространство имен. объекта сохраняется еще и информация о классе. Его имя, пространство имен.
Результатом сериализации в примере выше будет: Результатом сериализации в примере выше будет:
@ -33,10 +34,11 @@ serialize($a);
O:16:"Test\Serialize\A":0:{}O:16:"Test\Serialize\A":0:{} O:16:"Test\Serialize\A":0:{}O:16:"Test\Serialize\A":0:{}
``` ```
Если теперь произвести рефакторинг, переместить класс, изменить пространство имен, то десериализация уже не сработает. Если теперь произвести рефакторинг, переместить класс,
изменить пространство имен, то десериализация уже не сработает.
И будет больно. И будет больно.
Не делайте так. Не делайте так.
Контролируйте процесс сериализации. Например используйте JSON и специальные Контролируйте процесс сериализации. Например, используйте JSON и специальные
функции для превращения объекта в массив и обратно. функции для превращения объекта в массив и обратно.