Подтвердить что ты не робот

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

Прежде всего, я не смог получить четкое определение из WikiPedia или даже из serialize в руководстве по PHP. Мне нужно знать некоторые случаи, когда нам нужен термин "сериализация" и как все происходит без него? Другими словами, если вам нужна сериализация, и без нее ваш код будет пропускать какую-то важную функцию.

4b9b3361

Ответ 1

Что такое сериализация?

Сериализация - это кодирование объектов на другой язык. Например, у вас есть массив в PHP, например:

$array = array("a" => 1, "b" => 2, "c" => array("a" => 1, "b" => 2));

И затем вы хотите сохранить его в файле или отправить в другое приложение.

Существует несколько вариантов языков, но идея одна и та же: Этот массив должен быть закодирован (или переведен) в текст или байты, которые могут быть записаны в файл или отправлены по сети. Например, если вы

$data = serialize($array);

вы получите следующее:

a:3:{s:1:"a";i:1;s:1:"b";i:2;s:1:"c";a:2:{s:1:"a";i:1;s:1:"b";i:2;}}

Это специфичный для PHP формат сериализации, который понимает PHP, и он работает наоборот, поэтому вы можете использовать его для десериализации объектов. Например, вы сохранили массив в файле и хотите вернуть его в свой код:

$array = unserialize($data);

Но вы можете выбрать другой формат сериализации, например JSON.

$json = json_encode($array);

предоставит вам следующее:

{"a":1,"b":2,"c":{"a":1,"b":2}}

Результат, который не только легко сохраняется, читается человеческим глазом или отправляется через сеть, но и понятен почти любому другому языку (Javascript, Java, С#, С++.....)

Заключение Сериализация - это перевод объекта на другой язык, если вы хотите хранить или обмениваться данными.

Есть ли ситуации, когда вы ничего не можете сделать, но сериализуете ее?

Нет. Но сериализация обычно упрощает работу.

Являются ли форматы JSON и PHP единственными возможными форматами? Нет, нет, нет и еще один раз нет. Существует множество форматов.

  • XML, у которого есть преемники, такие как SOAP, WSDL и т.д. (они имеют особую цель).
  • Б
  • ...
  • ...
  • ...
  • Ваши собственные форматы (вы можете создать свой собственный формат для сериализации и использовать его, но это большая вещь, которую нужно делать и чего не стоит, большую часть времени).

Надеюсь, я помог!

Ответ 2

Сериализация - это процесс преобразования некоторого объекта в памяти в другой формат, который может использоваться для хранения в файле или отправки по сети. Deserialization - это обратный процесс, означающий, что фактический экземпляр объекта восстанавливается из данного сериализованного представления объекта. Это очень полезно при общении между различными системами.

Формат сериализации может быть либо совместимым, либо несовместимым. Интерактивные форматы (такие как JSON, XML,...) позволяют сериализовать некоторый объект с использованием данной платформы и десериализовать его с использованием другой платформы. Например, с помощью JSON вы можете использовать javascript для сериализации объекта и отправки его по сети на PHP script, который будет десериализовать объект и использовать его.

serialize() Функция PHP использует несовместимый формат. Это означает, что для сериализации и десериализации объекта можно использовать только PHP.

Вы можете использовать json_encode и json_decode() для сериализации/десериализации объектов PHP с использованием совместимого формата JSON.

Ответ 3

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

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

$blub = array();
$blub['a'] = 1;
$blub['a']['b'] = 4;
$blub['b'] = 27;
$blub['b']['b'] = 46;

Вместо того, чтобы проходить через каждый элемент массива индивидуально и записывать его, можно просто:

$dataString = serialize($blub);

И сериализованный массив готов к записи в любом месте в виде простой строки, таким образом, чтобы снова извлечь эту строку и сделать unserialize() над ней, вы получите ту же структуру массива, что и раньше. Да, это действительно так просто.

Ответ 4

Мне нужно знать некоторые случаи, в которых нам нужен термин "сериализация" и как все происходит без него?

Сериализация может стать удобной, если вам нужно хранить полные структуры (например, счет-фактуру со всеми связанными данными, такими как адрес клиента, адрес отправителя, позиции товара, налоговые каллуляции и т.д.), которые действительны только в определенный момент времени.

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

Это возможно с сериализацией. Как моментальный снимок. Объект в памяти сериализуется в двоичную форму (часто как в PHP), которая может быть просто сохранена. Его можно вернуть, чтобы жить позже (и в другом контексте). Как и в случае с этим счетом-фактурой: через десять лет данные все еще можно прочитать, а объект счета-фактуры будет таким же, как и десятью годами ранее.

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

Это был один пример. Это не то, что вам это всегда нужно, но если ситуация станет более сложной, сериализация может быть полезна.

Ответ 5

Поскольку вы отметили его с помощью javascript, один вид сериализации может быть сериализован.

Вот ссылки для jQuery и prototype.JS.

Что они в основном делают, это сериализовать входные значения формы в разделенные запятыми пары имени и знака.

Итак, рассмотрим фактическое использование.

$.ajax({
   url : 'insert.php?a=10,b=15' //values serialized via .serialize()
   type: 'GET'
});

И вы, вероятно, сделаете $GET["a"], чтобы получить эти значения, но я не знаком с PHP.