Я только что узнал о функциях serialize()
и unserialize()
. Для чего это нужно? Я знаю, что люди сериализуют вещи, чтобы помещать их в базу данных. Не могли бы вы дать мне пример использования, где это полезно?
Я также вижу сериализованный код в javascript, это то же самое? Может ли сериализованная строка в javascript быть неэтериализована с помощью php unserialize()
?
Сериализация PHP позволяет хранить массив или объект в текстовой форме. При назначении массивов таким вещам, как $ _SESSION, он позволяет PHP хранить его в текстовом файле, а затем воссоздавать его позже. Сериализация используется для объектов и переменных. (Просто убедитесь, что вы объявили класс, который использует объект заранее)
С другой стороны, WordPress использует его для очень похожего метода, сохраняя сериализованные массивы непосредственно в базе данных. Если вы храните базу данных с ключами => значения, это может быть очень полезно из-за гибкости массивов, вы можете хранить что-либо в параметре значения.
И heres ссылка (любезно предоставлена первым комментатором): http://us3.php.net/serialize
Я часто вижу серийный хранилище данных в базе данных, и мне это действительно не нравится:
Тем не менее, я признаю, что это простой способ хранить не-четко определенные данные … и я иногда использую его для этого …
Другое использование для сериализации состоит в том, чтобы облегчить обмен данными между двумя системами: например, отправка объектов через какой-то веб-сервис требует их сериализации каким-то образом.
Если две системы – это PHP, вы можете предусмотреть использование serialize
/ unserialize
. Но и здесь, что, если одна из систем больше не PHP? Использование JSON или SOAP, вероятно, лучший выбор: сначала немного сложнее, но, вероятно, более долгосрочное решение, так как эти форматы известны и на других языках.
Одна вещь, которую я использую в функции serialize
PHP, – хранить данные в кеше (например, кеш пользователя APC) в приложении PHP: вы не можете хранить объекты как есть: вы должны их сериализовать. Поскольку кеш используется только одним приложением, нет необходимости использовать формат, известный на многих языках; поэтому, сериализация в порядке … И, чтобы хранить данные в кеше, вы должны использовать очень быструю функцию сериализации – и сериализация довольно быстро ^^
Я часто использую serialize
для хранения важной информации в базе данных, которая не стоит создавать совершенно новое поле, но может быть полезна в будущем.
Например, если пользователь заполняет форму, в которой я храню только несколько элементов, но я хочу сохранить их на случай, если они мне понадобятся позже, я буду сериализовать массив элементов формы и сохранить его в базе данных.
Сериализация используется, когда вы хотите передавать данные за пределами PHP, например, в Javascript.
Да, он часто работает, чтобы отправлять строки, целые числа и строки как они есть, но не более сложные структуры, такие как массивы. Подробнее о передаче массива PHP в Javascript читайте здесь .
Вы также можете форматировать свои данные как JSON, который широко поддерживается на многих языках, но затем вы теряете родные типы PHP и свои собственные классы при конвертации в него. Подробнее о JSON и PHP читайте здесь .