HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-03-10
1 <p>Теги: php, php программирование, сериализация в php, преобразование объекта в строку, преобразование строки в объект, десериализация</p>
1 <p>Теги: php, php программирование, сериализация в php, преобразование объекта в строку, преобразование строки в объект, десериализация</p>
2 <p>В этой статье поговорим о том, как происходит<strong>преобразования объекта в строку</strong><a>на PHP</a>, что такое<strong>сериализация объектов</strong>в PHP и зачем, собственно говоря, всё это нужно.</p>
2 <p>В этой статье поговорим о том, как происходит<strong>преобразования объекта в строку</strong><a>на PHP</a>, что такое<strong>сериализация объектов</strong>в PHP и зачем, собственно говоря, всё это нужно.</p>
3 <h2>Для чего нужна сериализация в PHP?</h2>
3 <h2>Для чего нужна сериализация в PHP?</h2>
4 <p>Представьте, что вы создаёте<strong>клиент-серверное приложение</strong>на PHP, в котором хотите обмениваться информацией со скриптом. Если это ваш случай, то не обойтись без сериализации. Именно она позволяет выполнить преобразование обычного PHP-объекта в строку, которую поймёт скрипт.</p>
4 <p>Представьте, что вы создаёте<strong>клиент-серверное приложение</strong>на PHP, в котором хотите обмениваться информацией со скриптом. Если это ваш случай, то не обойтись без сериализации. Именно она позволяет выполнить преобразование обычного PHP-объекта в строку, которую поймёт скрипт.</p>
5 <h2>Преобразуем объект в строку на практике</h2>
5 <h2>Преобразуем объект в строку на практике</h2>
6 <p>Чтобы выполнить преобразование объекта в строку, в PHP применяются специальные функции: - serialize() - обеспечивает преобразование объекта в строку; - unserialize() - выполняет преобразование обратно.</p>
6 <p>Чтобы выполнить преобразование объекта в строку, в PHP применяются специальные функции: - serialize() - обеспечивает преобразование объекта в строку; - unserialize() - выполняет преобразование обратно.</p>
7 <p>Давайте возьмём в качестве примера класс User и создадим его объект:</p>
7 <p>Давайте возьмём в качестве примера класс User и создадим его объект:</p>
8 &lt;?php class User { private $name; private $role; public function __construct($name, $role) { $this-&gt;name = $name; $this-&gt;role = $role; } public function changeName($name) { $this-&gt;name = $name; } public function changeRole($role) { $this-&gt;role = $role; } public function getName() { return $this-&gt;name; } public function getRole() { return $this-&gt;role; } $user = new User('Tom', 1); $string = serialize($user); echo $string; } ?&gt;<p>Результатом станет получение строки, хранящей наш объект. После этого можно передать строку, например, скрипту.</p>
8 &lt;?php class User { private $name; private $role; public function __construct($name, $role) { $this-&gt;name = $name; $this-&gt;role = $role; } public function changeName($name) { $this-&gt;name = $name; } public function changeRole($role) { $this-&gt;role = $role; } public function getName() { return $this-&gt;name; } public function getRole() { return $this-&gt;role; } $user = new User('Tom', 1); $string = serialize($user); echo $string; } ?&gt;<p>Результатом станет получение строки, хранящей наш объект. После этого можно передать строку, например, скрипту.</p>
9 <p>Идём дальше: давайте теперь выполним преобразование строки обратно в объект:</p>
9 <p>Идём дальше: давайте теперь выполним преобразование строки обратно в объект:</p>
10 $user = unserialize($string);<p>И проверим, что объект по-прежнему работает:</p>
10 $user = unserialize($string);<p>И проверим, что объект по-прежнему работает:</p>
11 echo $user-&gt;getName(); // вернёт 'Tom'<p>Использование PHP-сериализации при сохранении объекта позволит сохранить все его переменные. Однако<strong>методы сохранены не будут</strong>. Это значит, что если мы хотим, чтобы всё работало, нам нужно<strong>подключать класс раньше</strong>, чем мы вызываем функцию unserialize(). Это можно сделать двумя способами: - сохранить определения класса User в отдельный файл с последующим подключением этого файла; - использовать функцию spl_autoload_register() для автоматического подключения:</p>
11 echo $user-&gt;getName(); // вернёт 'Tom'<p>Использование PHP-сериализации при сохранении объекта позволит сохранить все его переменные. Однако<strong>методы сохранены не будут</strong>. Это значит, что если мы хотим, чтобы всё работало, нам нужно<strong>подключать класс раньше</strong>, чем мы вызываем функцию unserialize(). Это можно сделать двумя способами: - сохранить определения класса User в отдельный файл с последующим подключением этого файла; - использовать функцию spl_autoload_register() для автоматического подключения:</p>
12 &lt;?php spl_autoload_register(function($name) { require_once $name.'.php'; }); $user = unserialize($string); ?&gt;<h2>"Волшебные" методы __sleep и __wakeup</h2>
12 &lt;?php spl_autoload_register(function($name) { require_once $name.'.php'; }); $user = unserialize($string); ?&gt;<h2>"Волшебные" методы __sleep и __wakeup</h2>
13 <p>Иногда возникает необходимость перед преобразованием объекта в строку выполнить какое-нибудь действие. Для подключения к событиям сериализации и десериализации в PHP используют методы __sleep() и__wakeup(). Кроме того, метод __sleep() даёт возможность сериализовать только некоторое подмножество свойств объекта. Пример работы данных методов:</p>
13 <p>Иногда возникает необходимость перед преобразованием объекта в строку выполнить какое-нибудь действие. Для подключения к событиям сериализации и десериализации в PHP используют методы __sleep() и__wakeup(). Кроме того, метод __sleep() даёт возможность сериализовать только некоторое подмножество свойств объекта. Пример работы данных методов:</p>
14 &lt;?php class User { // ... public function __sleep() { echo 'Начинаем конвертировать объект в строку&lt;br&gt;'; return ['name', 'role']; } public function __wakeup() { echo '&lt;br&gt;Начинаем конвертировать строку в объект'; } } ?&gt;<p>На этом всё, удачного вам кодинга!</p>
14 &lt;?php class User { // ... public function __sleep() { echo 'Начинаем конвертировать объект в строку&lt;br&gt;'; return ['name', 'role']; } public function __wakeup() { echo '&lt;br&gt;Начинаем конвертировать строку в объект'; } } ?&gt;<p>На этом всё, удачного вам кодинга!</p>
15 <p><em>Хотите знать больше? Записывайтесь на курс "<a>Backend-разработчик на PHP</a>"!</em></p>
15 <p><em>Хотите знать больше? Записывайтесь на курс "<a>Backend-разработчик на PHP</a>"!</em></p>
16  
16