Об’єкт JSON в Серіалізований об’єкт PHP Конвертер
Легко серіалізуйте та десеріалізуйте дані в PHP за допомогою нашого універсального інструмента серіалізації та десеріалізації PHP. Ця онлайн-утиліта стане в пригоді розробникам, яким потрібно перетворювати складні структури даних на рядки для зберігання, а потім відновлювати їх у початковому вигляді. Обробляйте дані точно й ефективно без встановлення програмного забезпечення. Покращуйте робочий процес розробки PHP за допомогою цього зручного та надійного інструмента.
Поширені запитання
Щоб серіалізувати дані в PHP, введіть структуру даних (масив, об’єкт або скалярне значення) у відповідне поле та натисніть кнопку «Серіалізувати». Інструмент перетворить складні структури даних на рядок для зберігання за допомогою протоколу серіалізації PHP. Отримане представлення можна зберегти у файлах і базах даних або передати мережею.
Щоб десеріалізувати дані в PHP, введіть серіалізований рядок (зазвичай він починається з індикаторів формату, як-от a:, s: або O:) у відповідне поле та натисніть кнопку «Десеріалізувати». Інструмент перетворить рядок назад на початкову структуру даних, точно відновивши масиви, об’єкти та значення в тому вигляді, який вони мали до серіалізації.
Серіалізація перетворює складні структури даних на рядки для зберігання. Це дає змогу зберігати дані у файлах або базах даних, передавати їх мережею, зберігати дані сеансів, кешувати, формувати повідомлення для черг і зберігати стан об’єктів між запитами. Десеріалізація відновлює початкові дані для подальшого використання.
PHP серіалізує рядки, цілі числа, числа з рухомою крапкою, логічні значення, масиви, об’єкти та значення NULL. Він зберігає ключі масивів, властивості об’єктів (відкриті, захищені й приватні), вкладені структури та типи даних. Однак ресурси, як-от підключення до баз даних або дескриптори файлів, серіалізувати не можна — для них потрібна спеціальна обробка.
Так, під час десеріалізації ненадійних даних можуть виникати атаки з впровадженням об’єктів PHP. Зловмисники можуть створити шкідливі серіалізовані рядки, що запускають код через магічні методи (__wakeup, __destruct). Ніколи не виконуйте unserialize для введених користувачами чи зовнішніх даних без перевірки. Для ненадійних даних використовуйте JSON або обмежте дозволені класи за допомогою allowed_classes.
Так, PHP серіалізує користувацькі об’єкти, зберігаючи всі їхні властивості та значення. Однак, щоб правильно відновити об’єкти, перед десеріалізацією потрібно завантажити визначення класів. Використовуйте автозавантаження, підключайте файли класів або реалізуйте магічні методи __sleep() і __wakeup() для власної поведінки серіалізації.
PHP serialize() зберігає точні типи даних, приватні й захищені властивості та інформацію про клас об’єкта, але працює лише в PHP. JSON не залежить від мови, його легко читати, він підходить для вебу та працює в усіх мовах, але не зберігає приватні властивості й точні типи PHP. Використовуйте serialize() для зберігання лише в PHP, а JSON — для API та сумісності між системами.
PHP автоматично серіалізує дані сеансу ($_SESSION) для зберігання між запитами. Коли ви зберігаєте масиви або об’єкти в сеансах, PHP серіалізує їх у файли чи бази даних, а під час наступного завантаження сторінки десеріалізує. Так можна зберігати стан користувача, вміст кошика й дані автентифікації під час переходів між сторінками.
Так, серіалізовані дані можна зберігати у стовпцях бази даних типу TEXT або BLOB. Однак через серіалізацію ефективно запитувати, індексувати та шукати дані складніше. Використовуйте її для зберігання цілих об’єктів як єдиного цілого, а коли потрібно запитувати окремі поля чи підтримувати зв’язки між даними, віддавайте перевагу JSON або нормалізованим таблицям.
Серіалізовані дані мають префікси формату: s:5:"hello" (рядок), i:42 (ціле число), a:2:{...} (масив), O:4:"User" (об’єкт). Числа вказують на довжину або кількість елементів. Формат компактний, але його важко читати. Скористайтеся нашим інструментом, щоб перетворювати читабельний JSON на серіалізований формат PHP і навпаки для налагодження та роботи з даними.
Десеріалізуйте дані для перевірки їх структури, використовуйте print_r() або var_dump() для десеріалізованих значень, конвертуйте в JSON для читабельності, перевіряйте на неповну серіалізацію або пошкодження, перевіряйте доступність класів для об'єктів, а також використовуйте наш інструмент для візуалізації та розуміння складних серіалізованих структур.
Стандартна серіалізація PHP не підтримує замикання. Для цього використовуйте пакети на кшталт Opis Closure або SerializableClosure від Laravel. Звичайні функції та методи в об'єктах можна серіалізувати, якщо вони визначені в класах, але анонімні функції потребують спеціальної обробки.
__sleep() виконується перед серіалізацією та повертає масив властивостей для серіалізації (це зручно, щоб виключити певні дані). __wakeup() виконується після десеріалізації для ініціалізації. __serialize() і __unserialize() (у PHP 7.4+) надають більше контролю. Реалізуйте ці методи, щоб налаштувати поведінку серіалізації у своїх класах.
Десеріалізуйте наявні дані PHP, перетворіть їх на масиви або об’єкти stdClass, а потім закодуйте за допомогою JSON. Оновіть код: використовуйте json_encode()/json_decode() замість serialize()/unserialize(). JSON безпечніший, читабельніший і сумісніший, хоча ви втратите приватні властивості та точне збереження типів, яке забезпечує серіалізація.