Для чего нужна функция serialize () PHP?

Я только что узнал о функциях serialize() и unserialize() . Для чего это нужно? Я знаю, что люди сериализуют вещи, чтобы помещать их в базу данных. Не могли бы вы дать мне пример использования, где это полезно?

Я также вижу сериализованный код в javascript, это то же самое? Может ли сериализованная строка в javascript быть неэтериализована с помощью php unserialize() ?

Solutions Collecting From Web of "Для чего нужна функция serialize () PHP?"

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

С другой стороны, WordPress использует его для очень похожего метода, сохраняя сериализованные массивы непосредственно в базе данных. Если вы храните базу данных с ключами => значения, это может быть очень полезно из-за гибкости массивов, вы можете хранить что-либо в параметре значения.

И heres ссылка (любезно предоставлена ​​первым комментатором): http://us3.php.net/serialize

Я часто вижу серийный хранилище данных в базе данных, и мне это действительно не нравится:

  • работать с SQL с этими данными очень сложно: как вы записываете условия для сериализованных данных? Еще сложнее: как вы его обновляете? Вы действительно пишете PHP-скрипт, который извлекает все строки, неэтериализует их, модифицирует, повторно сериализует и сохраняет их обратно в БД? 🙁
  • в тот день, когда вы захотите перенести свои данные на другое программное обеспечение, потребуется больше работы для переноса данных (и будет еще больше работать, если новое программное обеспечение не написано на PHP, кстати)

Тем не менее, я признаю, что это простой способ хранить не-четко определенные данные … и я иногда использую его для этого …

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

Если две системы – это PHP, вы можете предусмотреть использование serialize / unserialize . Но и здесь, что, если одна из систем больше не PHP? Использование JSON или SOAP, вероятно, лучший выбор: сначала немного сложнее, но, вероятно, более долгосрочное решение, так как эти форматы известны и на других языках.

Одна вещь, которую я использую в функции serialize PHP, – хранить данные в кеше (например, кеш пользователя APC) в приложении PHP: вы не можете хранить объекты как есть: вы должны их сериализовать. Поскольку кеш используется только одним приложением, нет необходимости использовать формат, известный на многих языках; поэтому, сериализация в порядке … И, чтобы хранить данные в кеше, вы должны использовать очень быструю функцию сериализации – и сериализация довольно быстро ^^

Я часто использую serialize для хранения важной информации в базе данных, которая не стоит создавать совершенно новое поле, но может быть полезна в будущем.

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

Сериализация используется, когда вы хотите передавать данные за пределами PHP, например, в Javascript.

Да, он часто работает, чтобы отправлять строки, целые числа и строки как они есть, но не более сложные структуры, такие как массивы. Подробнее о передаче массива PHP в Javascript читайте здесь .

Вы также можете форматировать свои данные как JSON, который широко поддерживается на многих языках, но затем вы теряете родные типы PHP и свои собственные классы при конвертации в него. Подробнее о JSON и PHP читайте здесь .