Просмотров: 1 798

Что такое сериализация данных в PHP.

Представьте себе, что у нас есть некоторый объект – машина. У этого объекта есть ряд параметров, например:

+ Марка

+ Максимальная скорость

+ Вес

+ Цвет

Для того, чтобы хранить все эти данные в базе данных, мы можем создать отдельную таблицу, которую можно назвать «машины». Вот как может выглядеть ее структура.

01-03-2013 5-12-58

Чтобы описать структуру такой таблицы, понадобилось 3 строки и 5 столбцов в базе данных.

Но, существует способ, с помощью которого, все эти значения можно уместить и хранить всего в одной строке или ячейке базы данных.

Это может выглядеть вот так:

a:3:{i:0;a:4:{s:10:»Марка»;s:3:»BMW»;s:41:»Максимальная скорость»;i:215;s:6:»Вес»;i:111;s:8:»Цвет»;s:14:»красный»;}i:1;a:4:{s:10:»Марка»;s:4:»AUDI»;s:41:»Максимальная скорость»;i:125;s:6:»Вес»;i:112;s:8:»Цвет»;s:14:»зеленый»;}i:2;a:4:{s:10:»Марка»;s:33:»Еще какая-то марка»;s:41:»Максимальная скорость»;i:525;s:6:»Вес»;i:212;s:8:»Цвет»;s:10:»синий»;}}

Т.е. компьютер будет определять, что это за значение и где оно находится по последовательности специальных символов. Процедура, с помощью которой можно привести данные к подобному виду, называется сериализацией.

Сериализация – это процесс перевода какой-либо структуры данных в последовательность битов. В  случае с сериализацией php, происходит преобразование сложной структуры хранения данных в простую текстовую строку.

Десериализация – это обратная операция, когда из одной строки, на выходе получаем сложную структуру.

Так зачем же нужны все эти преобразования?

На самом деле хранить и передавать одну строку текста, вместо сложных объектов и массивов, в некоторых ситуациях, намного легче и удобнее. Например, мы получаем совместимость при передаче данных от скрипта к скрипту и от приложения к приложению, даже если они написаны разными разработчиками, по разным стандартам. Текстовые строки во всех программах воспринимаются одинаково.

Кроме того, хранить одну строку в базе данных намного компактнее, чем создавать для этого сложную структуру.

Сериализация данных очень часто используется в современных скриптах и CMS системах.

Вот пример, как блог на движке WordPress хранит информацию об активированных плагинах.

На языке PHP, есть специальные функции, которые позволяют производить преобразование данных от одного вида к другому. Мы рассмотрим эти функции в следующей заметке.