• 27306
  • 342
  • 28
Нравится блог?
Подписывайтесь!

Сериализация в PHP

Всем привет, это снова я. После сравнительного успеха моего предыдущего поста, решилась на новый: про сериализацию.

Идея сериализации состоит в том, что переменную (будь то массив, объект или, например, число) можно перевести в специально форматированный текст. Этот текст можно записать в базу данных, передать по сети или как-то иначе сохранить и, в последствие, "расшифровав", получить идентичное начальному значение.

В PHP этим занимаются функции serialize() и unserialize(). Использование тривиально:

$a = array('name'=>'Marion','surname'=>'Silver');
$data = serialize($a);
// Записываем / передаем
$a = unserialize($data);
echo $a['name']; // Marion

class MyClass {
private $name;
private $alreadyGreeted = FALSE;


public function __construct($name) {
$this->name = $name;
}

public function hello() {
if ($this->alreadyGreeted) {
echo "Снова привет\n";
}
else {
echo "Привет, меня зовут {$this->name}\n";
$this->alreadyGreeted = TRUE;
}
}


public function __sleep() {
echo "Спать!\n";
return array('name','alreadyGreeted');
}


public function __wakeup() {
echo "Проснись и сияй\n";
}
}

$obj = new MyClass('Маша');
$data = serialize($obj); // Спать!
$obj = unserialize($data); // Проснись и сияй
$obj->hello(); // Привет, меня зовут Маша
$data = serialize($obj); // Спать!
$obj = unserialize($data); // Проснись и сияй
$obj->hello(); // Снова привет

С сериализацией связано 2 метода: __sleep() и __wakeup(). __sleep() должен вернуть массив с именами переменных, которые надо записать во время сериализации, __wakeup() дает возможность "настроить" объект после того как он был "разбужен" перед использованием.

Спрашивайте, комментируйте! :)

p.s. Редактор меня достал, не предназначен для кода :(

Мария Marion_Silver
23 февраля 2010, 10:44
1464

Загрузка...

Комментарии

7kun
0
0
Хорошо написано. Я бы добавил сериализацию в XML для осуществления межпрограммного взаимодействия.
Верно! Тогда не только XML, но и популярный нынче JSON - тянет на самостоятельный пост :)
Этот пост надо в раздел "Я знаю php")
Я не волшебница, я только учусь :)
yerbol
0
0
вот еще статейка про это www.xakep.ru
mackay
0
0
блин я тоже ничего не понял, тока учусь :)

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

Спасибо за открытие блога в Yvision.kz! Чтобы убедиться в отсутствии спама, все комментарии новых пользователей проходят премодерацию. Соблюдение правил нашей блог-платформы ускорит ваш переход в категорию надежных пользователей, не нуждающихся в премодерации. Обязательно прочтите наши правила по указанной ссылке: Правила

Также можно нажать Ctrl+Enter

Популярные посты

Я был удивлён, что в Азербайджане есть Казахский район

Я был удивлён, что в Азербайджане есть Казахский район

Мне как казаху по национальности очень хотелось туда попасть. Оказалось, что климат там намного суровей и люди, говорят, суровые и воинственные. Казах – город на западе Азербайджана...
alidimash
18 янв. 2017 / 21:50
  • 30215
  • 18
10 лучших районов Алматы. Широкие улочки, частные дома, летом – красота!

10 лучших районов Алматы. Широкие улочки, частные дома, летом – красота!

Названия улиц: Садовый бульвар, Солнечный проезд. Красиво звучит не так ли? Прям, как в Москве... Уютные улочки и радующие глаз одноэтажные домики, тихо и свободно, нет динамики, движух и ажиотажа.
gelberdeuet
16 янв. 2017 / 14:45
  • 8592
  • 98
Многочасовые очереди, смерти в ЦОНах: почему вопросы об этом ставят парламентариев в тупик?

Многочасовые очереди, смерти в ЦОНах: почему вопросы об этом ставят парламентариев в тупик?

Ожидали ли депутаты Мажилиса всего этого? Как планировали этот процесс регистрации, и обсуждали ли его, прежде чем одним нажатием кнопки принять нормы с такими абсурдными временными рамками?
openqazaqstan
17 янв. 2017 / 14:32
  • 5026
  • 22
Астана глазами алматинских девушек. Как при таких погодных условиях можно выжить?

Астана глазами алматинских девушек. Как при таких погодных условиях можно выжить?

В спальных районах, и в высотных домах сквозь стены слышно завывание ветра. В особенности ночью. Такие звуки, я слышала, пожалуй, только по телевизору, в фильмах про метель.
Naomi_K
20 янв. 2017 / 12:36
Сильное ДТП произошло в Алматы на Тимирязева-Байзакова

Сильное ДТП произошло в Алматы на Тимирязева-Байзакова

NoComment (c) Официальный слоган EuroNews. Катастрофа на алматинской утренней трассе началась с того, что водители «Ниссана» и микровена ожидали сигнала светофора на запад по Тимирязева...
ibestreporter
17 янв. 2017 / 22:52
  • 3845
  • 5
Вейпинг безопасен? Эндрю Холл из США тоже так считал, пока что-то не пошло не так

Вейпинг безопасен? Эндрю Холл из США тоже так считал, пока что-то не пошло не так

Эндрю Холл из США считал, что вейпинг безопасен и усиленно убеждал в этом близких. Но как-то раз что-то пошло не так. Это результат взрыва хипстерского устройства - выбило 7 зубов + ожоги и раны...
Maxambet
17 янв. 2017 / 16:28
  • 3869
  • 52
Это поколение просрет страну. 20-летняя молодежь представляет из себя сказочных эльфов

Это поколение просрет страну. 20-летняя молодежь представляет из себя сказочных эльфов

Смотря в очередные пустые глаза вчерашнего студента, приходящего устраиваться на первую работу страшно становится. Потому что сравниваю с теми же китайскими студентами, которые готовы выгрызать себе мечту.
mbaitykov
18 янв. 2017 / 11:34
Становится хуже, но как-то постепенно. Беднеем, но тоже как-то не разом

Становится хуже, но как-то постепенно. Беднеем, но тоже как-то не разом

Помню, когда я уезжал и Казахстана, тут было довольно прилично, даже не смотря на то, что жить было невыносимо. Но прилично так. Мусора было меньше. Дороги чистили, вони почти не было. Да и в остальном тоже норм.
shootnix
18 янв. 2017 / 12:49
  • 3580
  • 34
Любимый Тайланд. Правящий король называет Паттайю «черным пятном на репутации страны»

Любимый Тайланд. Правящий король называет Паттайю «черным пятном на репутации страны»

Тайланд мы впервые посетили в декабре 2012 года. Полученные эмоции настолько были яркими, что в конце 2015 года мы решили еще разок слетать в Тайланд. Вспоминая Тай, первое о чем я думаю - горячий...
zhainar_d
17 янв. 2017 / 11:11
  • 3431
  • 24