Преобразование объекта в строку на PHP | OTUS
🔥 BLACK FRIDAY!
Максимальная скидка -25% на всё. Успейте начать обучение по самой выгодной цене.
Выбрать курс

Курсы

Программирование
iOS Developer. Basic
-25%
Python Developer. Professional
-25%
Разработчик на Spring Framework
-25%
Golang Developer. Professional
-25%
Python Developer. Basic
-25%
iOS Developer. Professional
-25%
Highload Architect
-25%
JavaScript Developer. Basic
-25%
Kotlin Backend Developer
-25%
JavaScript Developer. Professional
-25%
Android Developer. Basic
-25%
Unity Game Developer. Basic
-25%
Разработчик C#
-25%
Программист С Web-разработчик на Python Алгоритмы и структуры данных Framework Laravel PostgreSQL Reverse-Engineering. Professional CI/CD Vue.js разработчик VOIP инженер Программист 1С Flutter Mobile Developer Супер - интенсив по Kubernetes Symfony Framework Advanced Fullstack JavaScript developer Супер-интенсив "Azure для разработчиков"
Инфраструктура
Мониторинг и логирование: Zabbix, Prometheus, ELK
-25%
DevOps практики и инструменты
-25%
Архитектор сетей
-25%
Инфраструктурная платформа на основе Kubernetes
-25%
Супер-интенсив «IaC Ansible»
-16%
Разработчик программных роботов (RPA) на базе UiPath и PIX
-25%
Супер-интенсив "SQL для анализа данных"
-16%
Базы данных Сетевой инженер AWS для разработчиков Cloud Solution Architecture Разработчик голосовых ассистентов и чат-ботов Внедрение и работа в DevSecOps Администратор Linux. Виртуализация и кластеризация Нереляционные базы данных Супер-практикум по использованию и настройке GIT IoT-разработчик Супер-интенсив «ELK»
Специализации Курсы в разработке Подготовительные курсы
+7 499 938-92-02

Преобразование объекта в строку на PHP

PHP_Deep_11.11-5020-5bfe43.png

В этой статье поговорим о том, как происходит преобразования объекта в строку на PHP, что такое сериализация объектов в PHP и зачем, собственно говоря, всё это нужно.

Для чего нужна сериализация в PHP?

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

Преобразуем объект в строку на практике

Чтобы выполнить преобразование объекта в строку, в PHP применяются специальные функции: — serialize() — обеспечивает преобразование объекта в строку; — unserialize() — выполняет преобразование обратно.

Давайте возьмём в качестве примера класс User и создадим его объект:

<?php
  class User {
   private $name;
   private $role;

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

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

   public function changeRole($role) {
    $this->role = $role;
   }

   public function getName() {
    return $this->name;
   }

   public function getRole() {
    return $this->role;
   }

   $user = new User('Tom', 1);
   $string = serialize($user);
   echo $string;
  }
?>

Результатом станет получение строки, хранящей наш объект. После этого можно передать строку, например, скрипту.

Идём дальше: давайте теперь выполним преобразование строки обратно в объект:

$user = unserialize($string);

И проверим, что объект по-прежнему работает:

echo $user->getName(); // вернёт 'Tom'

Использование PHP-сериализации при сохранении объекта позволит сохранить все его переменные. Однако методы сохранены не будут. Это значит, что если мы хотим, чтобы всё работало, нам нужно подключать класс раньше, чем мы вызываем функцию unserialize(). Это можно сделать двумя способами: — сохранить определения класса User в отдельный файл с последующим подключением этого файла; — использовать функцию spl_autoload_register() для автоматического подключения:

<?php
  spl_autoload_register(function($name) {
   require_once $name.'.php';
  });

  $user = unserialize($string);
?>

«Волшебные» методы __sleep и __wakeup

Иногда возникает необходимость перед преобразованием объекта в строку выполнить какое-нибудь действие. Для подключения к событиям сериализации и десериализации в PHP используют методы __sleep() и__wakeup(). Кроме того, метод __sleep() даёт возможность сериализовать только некоторое подмножество свойств объекта. Пример работы данных методов:

<?php
  class User {
   // ...

   public function __sleep() {
    echo 'Начинаем конвертировать объект в строку<br>';
    return ['name', 'role'];
   }

   public function __wakeup() {
    echo '<br>Начинаем конвертировать строку в объект';
   }
  }
?>

На этом всё, удачного вам кодинга!

Хотите знать больше? Записывайтесь на курс "Backend-разработчик на PHP"!

Не пропустите новые полезные статьи!

Спасибо за подписку!

Мы отправили вам письмо для подтверждения вашего email.
С уважением, OTUS!

Автор
0 комментариев
Для комментирования необходимо авторизоваться
🎁 Максимальная скидка!
Черная пятница уже в OTUS! Скидка -25% на всё!