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

Для чего предназначена функция сериализации()?

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

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

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

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

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

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

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

Ответ 3

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

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

Ответ 4

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

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

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