---
title: "Сериализация в PHP"
description: "Всем привет, это снова я. После сравнительного успеха моего предыдущего поста, решилась на новый: пр..."
author: "Marion_Silver"
published: "2010-02-22T22:44:02+00:00"
modified: "2010-02-22T22:44:02+00:00"
locale: "ru"
canonical_url: "https://yvision.kz/post/serializaciya-v-php-32123"
markdown_url: "https://yvision.kz/post/serializaciya-v-php-32123/markdown"
site_name: "Yvision.kz"
---

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

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

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

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

В PHP этим занимаются функции [serialize()](http://www.php.net/manual/en/function.serialize.php) и [unserialize()](http://www.php.net/manual/en/function.unserialize.php). Использование тривиально:

```
$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()](http://www.php.net/manual/en/language.oop5.magic.php#language.oop5.magic.sleep). __sleep() должен вернуть массив с именами переменных, которые надо записать во время сериализации, __wakeup() дает возможность "настроить" объект после того как он был "разбужен" перед использованием.

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

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

---

Source: [https://yvision.kz/post/serializaciya-v-php-32123](https://yvision.kz/post/serializaciya-v-php-32123)