Палитра тишины…

Заметки, находки, работы еще одного веб-разработчика…
  • rss
  • Главная
  • Обмен постовыми
  • Обратная связь
  • Карта сайта
  • О блоге
  • Портфолио
Обмен постовыми

Сериализация данных в PHP…

Ex.clusive | 12.01.2011

Сериализация данных в PHP

Продолжаем пополнять “коллекцию” статей с меткой “Для новичка”, в рамках которой я ранее рассказывал о Выводе информации о сервере посредством PHP и Краткой записи операторов на PHP. Сегодня же предлагаю вашему вниманию немного полезной информации о так называемой “сериализации данных” в PHP…

Теория

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

Функции для сериализации

В то время как для сериализации сложных структур данных обычно создается собственная функция, ceриализацию любой переменной PHP можно осуществить с помощью функции serialize (). Ее синтаксис выглядит следующим образом: serialize($input), где $input – структура данных для сериализации. Данная функция возвращает строковое представление входных данных.

Пример использования функции:

<?php
$a = array("field1" => "text", "field2" => "text", 0 => 3, 1 => "text4");
$b = serialize($a);
?>

При этом переменная $b после сериализации будет содержать следующую строку:

a:4:{s:6:"field1";s:4:"text";s:6:"field2";s:4:"text";i:0;i:3;i:1;s:5:"text4";}

Как вы можете видеть из содержимого переменной – данную строку также нельзя непосредственно записать в базу данных или передать с помощью http-протокола, так как она содержит недопустимые символы. Для решения этой проблемы в наше распоряжение поступают различные методы. Например, если данные нужно сохранить строку в базе данных, то подойдет простое использование функции addslashes(), которая “заэкранирует” все служебные символы. При работе с НТТР-нротоколом нужно использовать функцию urlencode().

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

Для восстановления структуры данных из ее сериализованного представления в PHP предусмотрена следующая функция:

unserialize($input_string [, $callback_function])

,где $input_string представляет сериализированную ранее строку для восстановления, а $callback_function — имя необязательной функции обратного вызова для использования, если unserialize() реконструирует объект, который не был определен.

Вместо заключения

Не стоит забывать, что если сериализованная строка перед записью в базу или в файл была обработана функцией типа addslashes() и др. – необходимо перед использование unserialize() применить обратную функцию, т.е. в случае использования addslashes() это stripslashes().

На этом, собственно, основы применения сериализации данных в PHP заканчиваются (относительно, конечно же). Более подробно вы сможете узнать об этом достаточно важном процессе на просторах глобальной сети, либо из одной из книг по разработке веб-приложений на PHP, которыми я обещаю поделиться в течении ближайшей недели. К слову, среди них вы найдёте очень качественные сканы таких книг как “PHP 5: Unleashed” Джона Коггзолла и “PHP 5 В подлиннике” Дмитрия Котерова и Алексея Костарева.

P.S: а Вы знаете интересные примеры применения сериализации данных?


А чтобы Вы не пропустили ничего интересного, рекомендую подписаться на обновления блога:
Подписаться на обновления блога через RSS | Подписаться на рассылку обновлений на e-mail
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
Рубрика:
Веб-программирование
Метки:
PHP, Для новичка, Программирование
Comments rss
RSS
Рейтинг: 1 звезда2 звезды3 звезды4 звезды5 звезд (Еще не оценили)
Загрузка ... Загрузка ...

Рекомендуемые статьи:

  • PHP – краткая запись операторов… (7)
  • Простой счётчик нажатий на кнопку (PHP)… (15)
  • Вывод информации о сервере посредством PHP… (5)
  • Создание “favicon” – советы и сервисы… (10)
  • Выбираем кодировку: Windows-1251 или UTF-8… (18)

« Живые картины – креативные работы Alexa Meade… Art-Stream.net продолжает набирать обороты… »


Комментарии

SeoRead.ru » Интересно почитать № 3349 (12.01.2011 | 20:40)

[...] Читать далее: Сериализация данных в PHP… [...]

PeterNo Gravatar (25.01.2011 | 21:04)

Спасибо за интересную статью.

KiraNo Gravatar (30.06.2011 | 15:08)

Хотелось бы узнать для какой цели надо передавать эту белиберду браузеру?

pomoshNo Gravatar (30.06.2011 | 22:08)

Статья конечно позновательная, но для чего это делается?

TheKIPNo Gravatar (13.07.2011 | 0:18)

Делается это например для того что бы загнать в одну куку какие ни будь данные. зачем? – спросите вы, ну например при реализации корзины в интрнет магазине, где корзина будет работать на аяксе, и нужно что бы в куках всегда были сведения о текущих покупках, к примеру ввиде id => количество

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

Тогда просто формируем одномерный массив, со всеми папками к которым есть доступ, и гоним в базу. Потом соответственно извлекаем из неё и работаем.

collapsNo Gravatar (17.03.2012 | 2:55)

Хорошый метод. Я его очень часто использую в своих скриптах. Очень стабильный способ который прекрастно передает данные без их утери.

MarkNo Gravatar (15.04.2012 | 12:44)

Автору спасибо. Хорошая ознакомительная статья.
Вот статья на эту же тему, но с более детальной проработкой примера. Возможно кому-то поможет лучше разобраться в теме.
http://lifeexample.ru/php-primeryi-skriptov/serializatsiya-php.html
Спасибо.

Оставить комментарий



Favorites RSS Twitter Last.fm Google Reader  Яндекс.Лента

ПОДПИСКА

E-mail

РУБРИКИ

  • Photoshop (8)
  • SEO/SMO/SMM (1)
  • WordPress (4)
  • Блогосфера (2)
  • Веб-вёрстка (6)
  • Веб-программирование (6)
  • Веб-сервисы (6)
  • Графика (8)
  • Заметки (6)
  • Интернет (8)
  • Музыка, Видео (5)
  • Программы (5)
  • Технологии (1)
  • Эксперименты (3)


АРХИВ

  • Июнь 2011 (1)
  • Январь 2011 (4)
  • Декабрь 2010 (9)
  • Ноябрь 2010 (6)
  • Октябрь 2010 (9)
  • Сентябрь 2010 (9)
  • Август 2010 (14)
  • Июль 2010 (17)

МЕТКИ

Apple CMS CSS Flash Google HTML iPod JavaScript Photoshop PHP RSS WordPress YouTube Бесплатно Блоги Браузеры Веб-дизайн Видео Вёрстка Графика Для новичка Заметки Иконки Интернет Кисти Кодировки Креатив Музыка Обновления Общество Позитив Программирование Программы Россия Сайты Сервисы Скрипты Стили Темы Техника Фотографии Хостинг Шрифты Эксперименты Юмор

Облако тегов плагина WP Cumulus от сайта "Плагины и шаблоны для WordPress" требует для просмотра Flash Player 9 или выше.

СООБЩЕСТВО

ПУЗОМЕРКИ


Анализ сайта online

© Copyright by www.exclusiveblog.ru    |    Powered by WordPress    |    Designed and сreated by Ex.clusive.