Добавлено ограничение строк для статей
This commit is contained in:
parent
4b9d9b8f41
commit
73235f0baa
2
source/_articles/.editorconfig
Normal file
2
source/_articles/.editorconfig
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
[*.md]
|
||||||
|
max_line_length = 80
|
@ -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 и специальные
|
||||||
функции для превращения объекта в массив и обратно.
|
функции для превращения объекта в массив и обратно.
|
||||||
|
Loading…
Reference in New Issue
Block a user